Dzień dobry,
Mam taki problem:
Wysyłam przy pomocy PHPMailera emaila z załącznikiem. Na localhoście (serwer poczty Postfix) załącznik jest, natomiast na serwerze hostingowym (serwer poczty EXIM) załącznika nie ma. Problem w tym, że jest jakiś problem na serwerze hostingowym (chyba z eacceleratorem) i nie mogę tego dobrze przetestować/przedebugować.
Oto kod:
function sendEmail($to, $recipients, $subject, $bodyText, $bodyHTML, $fullAnnouncementNo, $withAttachments, $logEntry) {
global $db, $websiteRoot;
try {
$mail = new PHPMailer();
$mail->CharSet = 'ISO-8859-2';
$mail->IsSMTP();
$mail->Host = 'localhost';
$mail->SMTPAuth = false;
$emailFrom = file_get_contents('.email_from.txt');
$mail->From = $emailFrom;
$mail->AddReplyTo($emailFrom);
if (!empty($to)) {
$mail->AddAddress($to);
}
if (!empty($recipients)) {
foreach (explode(',', $recipients) as $bcc) {
$mail->AddBCC($bcc);
}
}
$mail->IsHTML(!empty($bodyHTML));
$mail->Subject = $subject;
if (!empty($fullAnnouncementNo)) {
getAnnouncementYearMonthNo($fullAnnouncementNo, $year, $month, $no);
}
$mail->MsgHTML($bodyHTML);
$mail->AltBody = $bodyText;
if ($withAttachments && !empty($fullAnnoucementNo)) {
$result = $db->query('SELECT file_name, picture FROM pictures ' .
"WHERE announcement_year = $year AND announcement_month = $month AND announcement_no = $no");
while ($row = $result->fetch_row()) {
$mail->AddStringAttachment(stripslashes($row[1]), $row[0]);
}
$result->close();
}
$s = $mail->Send();
if (!$s) {
return false;
}
} catch (phpmailerException $e) {
return false;
} catch (Exception $e) {
return false;
}
if (!empty($fullAnnouncementNo)) {
writeToLog(null, null, $currentAdmin, $year, $month, $no, $logEntry);
} else {
writeToLog(null, null, $currentAdmin, null, null, null, $logEntry);
}
return true;
}
Funkcję wywołuję tak: sendEmail(null, $recipients, $subject, $bodyText, $bodyHTML, 'A10041', true, $logEntry);
Tabela pictures zawiera rekord: announcement_year=2010,announcement_month=4,announcement_no=1,file_name='log.gif',picture=[BLOB 245 bajtów]
dodany tak:
function insertPicture($fullAnnouncementNo, $fileName) {
global $db, $tmpDir;
$picture = addslashes(file_get_contents("$tmpDir/$fullAnnouncementNo/$fileName"));
if (is_empty($picture)) {
return false;
}
getAnnouncementYearMonthNo($fullAnnouncementNo, $year, $month, $no);
return $db->query("INSERT INTO pictures VALUES ($year, $month, $no, '$fileName', '$picture')") !== false;
}
Wysyła się email bez załącznika a powinien być 1 plik log.gif załączony.
Byłbym bardzo wdzięczny za pomoc, zależy mi na sprawie.