Отправка почты с Php с вложением PDF - PullRequest
0 голосов
/ 12 мая 2010

Я пытаюсь отправить электронное письмо из команды php mail. Я смог до того, что я пробовал до сих пор, но не могу заставить его работать с вложением. Я посмотрел в Интернете, и лучший код, который я нашел, привел меня к этому:

$fileatt_name = 'JuneFlyer.pdf';
$fileatt_type = 'application/pdf';
$fileatt = 'JuneFlyer.pdf';
$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
$data = chunk_split(base64_encode($data));
$MAEmail = "myemail@sbcglobal.net";

mail("$email_address", "$subject", "$message",
"From: ".$MAEmail."\n".
"MIME-Version: 1.0\n".
"Content-type: text/html; charset=iso-8859-1".
"--{$mime_boundary}\n" .
"Content-Type: {$fileatt_type};\n" .
" name=\"{$fileatt_name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .$data. "\n\n" ); 

Есть две проблемы, когда я делаю это. Во-первых, содержание письма исчезает.

Во-вторых, во вложении есть ошибка. «Adobe Reader не удалось открыть June_flyer.pdf, поскольку он либо не поддерживается типом файла, либо потому, что файл был поврежден (например, он был отправлен как вложение электронной почты и неправильно декодирован)» *

Есть идеи, как с этим бороться?

Спасибо,

JB

Ответы [ 3 ]

4 голосов
/ 12 мая 2010

Самый лучший способ работы с почтой и php - это использовать надежную, хорошо проверенную библиотеку - электронная почта с вложениями может легко стать очень неприятной. Я лично рекомендую SwiftMailer .

1 голос
/ 12 мая 2010

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

или простой способ - использовать PHPmailer или другие почтовые библиотеки, которые сделают за вас тяжелую работу.

0 голосов
/ 24 июля 2013

Один из способов узнать правильный формат электронной почты для отправки вложений - попытаться отправить себе электронное письмо (с вложением) с помощью Thunderbird, Outlook и т. Д.

Затем просмотрите источник этого письма. Попробуйте скопировать и вставить этот источник сообщений в ваш PHP-код (с небольшой обрезкой заголовков, таких как To и From и Subject, которые уже обрабатывает функция mail ()), и bada-bing, у вас есть все, что вам нужно. 1003 *

Вы можете сделать его динамичным, заменив куски материала (часть HTML, часть текста, вложение) вашими уникальными частями или переменными.

Тогда никакая необычная библиотека не нужна.

...