отправка pdf файла с электронной почтой, но pdf поврежден

Вопрос:

Я использую функцию ниже, чтобы отправить электронное письмо с вложением в модуль Drupal. Он отлично передает документы docx или doc, но когда он отправляет PDF-письмо с электронной почтой, файл PDF отличается от исходного, и документ не открывается. Я не могу понять, почему это происходит. Может ли кто-нибудь мне помочь? Благодарю.

<?php

$file = "http://website.com/files/211546865_file.pdf";

function mail_attachment($to, $subject, $message, $from, $file) {

$filename = basename($file);
$file_size = filesize($file);
$content = chunk_split(base64_encode(file_get_contents($file)));
$uid = md5(uniqid(time()));
$from = str_replace(array("\r", "\n"), '', $from); // to prevent email injection
$header = "From: ".$from."\r\n"
."MIME-Version: 1.0\r\n"
."Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n"
."This is a multi-part message in MIME format.\r\n"
."--".$uid."\r\n"
."Content-type:text/html; charset=ISO-8859-1\r\n"
."Content-Transfer-Encoding: 7bit\r\n\r\n"
.$message."\r\n\r\n"
."--".$uid."\r\n"
."Content-Type: application/octet-stream; name=\"".$filename."\"\r\n"
."Content-Transfer-Encoding: base64\r\n"
."Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n"
.$content."\r\n\r\n"
."--".$uid."--";

return mail($to, $subject, "", $header);
}

?>

Лучший ответ:

Граница должна выглядеть так:

Content-Type: multipart/alternative; boundary="--------A4D921C2D10D7DB"

смысл — содержать два менее символа «-«. См. Источник любого электронного письма.

Граница окончания почты — с другой стороны — должна, вероятно, выглядеть

----------A4D921C2D10D7DB--

(опять же, посмотрите источник любого почтового сообщения или, конечно, прочитайте RFC :)).

Я рекомендую вам использовать exisitng классы почтовой программы, такие как Swift Mailer или PHPMailer.

дайте мне знать, если я могу вам помочь.

Оцените статью
TechArks.Ru
Добавить комментарий