2015-09-14 2 views
0

У меня проблема с отправкой электронной почты с вложением в PDF, а содержимое сообщения - html-формат. Пожалуйста, проверьте мой код ниже. HTML-почта работает нормально. но проблема в приложении PDF.PHP-функция почты с вложением в pdf и html-сообщением

<?php 
$random_hash = md5(date('r', time())); 
$headers = "From: ".$from."\r\nReply-To: ".$from; 
$headers .= "\r\nContent-Type: text/html; boundary=\"PHP-mixed-".$random_hash."\""; 

foreach($summaryArray as $summaryArrayValue) 
{ 
    $file = 'pdf_directory/'.$summaryArrayValue['result_filename'].'.pdf'; 
    $fileName = $summaryArrayValue['result_filename']; 

    $attachment = chunk_split(base64_encode(file_get_contents($file))); 
    $message.=<<<EOD 
    Content-Type: application/octet-stream; name="{$fileName}" // tried with both application/octet-stream and application/pdf 
    Content-Transfer-Encoding: base64 
    Content-Disposition: attachment 

    {$attachment} 
    --PHP-mixed-{$random_hash}-- 

EOD; 
} 

$mail_sent = mail($to, $subject, $message, $headers); 
echo $mail_sent ? "Mail sent" : "Mail failed"; 
?> 

ответ

1

использовать скрипт PHPMailer это более простой вариант очень большим запасом по сравнению с пытается сделать это самостоятельно с встроенной почтовой функции РНР(). Функция PHP mail() действительно не очень хороша.

Использование PHPMailer:

Download the PHPMailer script from here: http://github.com/PHPMailer/PHPMailer 
Extract the archive and copy the script's folder to a convenient place in your project. 
Include the main script file -- require_once('path/to/file/class.phpmailer.php'); 

Теперь, отправка электронной почты с вложениями идет от безумно трудно невероятно легко:

$email = new PHPMailer(); 
$email->From  = '[email protected]'; 
$email->FromName = 'Your Name'; 
$email->Subject = 'Message Subject'; 
$email->Body  = $bodytext; 
$email->AddAddress('[email protected]'); 

$file_to_attach = 'PATH_OF_YOUR_FILE_HERE'; 

$email->AddAttachment($file_to_attach , 'NameOfFile.pdf'); 

return $email->Send(); 

Это просто одна строка $ email-> AddAttachment(); - Вы не могли бы попросить о нем легче.

Если вы сделаете это с помощью функции mail() PHP, вы будете писать стопки кода, и вам, вероятно, придется очень много найти ошибки.