Имя вложения и расширение файла не работают по электронной почте * .eml

Я хочу создать файлы электронной почты в формате .eml с несколькими вложениями. Вложения создаются и содержимое вложений верное. Но вложения всегда поступают в формате .dat , а имена файлов идут как «ATT00001», «ATT0002» и т. Д.

В настоящее время я следую решению, заданному в этом вопросе stackoverflow, и мой код выглядит следующим образом

PHP

  foreach($reports as $pdf){ $attachment = file_get_contents("auto_report_attachments\\Template_Attachment.eml"); $attachment = str_replace("TEMPLATE_MIME_TYPE", $pdf['type'], $attachment); $attachment = str_replace("TEMPLATE_FILE_NAME", $pdf['filename'], $attachment); $attachment = str_replace("TEMPLATE_ATTACHMENT_CONTENT", base64_encode($pdf['file']), $attachment); $content .= $attachment; unset($attachment); } с  foreach($reports as $pdf){ $attachment = file_get_contents("auto_report_attachments\\Template_Attachment.eml"); $attachment = str_replace("TEMPLATE_MIME_TYPE", $pdf['type'], $attachment); $attachment = str_replace("TEMPLATE_FILE_NAME", $pdf['filename'], $attachment); $attachment = str_replace("TEMPLATE_ATTACHMENT_CONTENT", base64_encode($pdf['file']), $attachment); $content .= $attachment; unset($attachment); } 

Добавление шаблона

 --080107000800000609090108 Content-Type: "TEMPLATE_MIME_TYPE" name="TEMPLATE_FILE_NAME" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="TEMPLATE_FILE_NAME" TEMPLATE_ATTACHMENT_CONTENT 

$content является основным заголовком и телом электронной почты, как описано в приведенной выше ссылке. Мой .eml файл выглядит так:

 MIME-Version: 1.0 Date: Tue, 16 Apr 2013 09:03:37 +0100 From: sender@emailhost.com To: recipient@emailhost.com Subject: Email subject Content-Type: multipart/mixed; boundary="080107000800000609090108" This is a message with multiple parts in MIME format. --080107000800000609090108 Content-Type: text/html <p><strong>Project Name: Some Project and the body continues...</p> --080107000800000609090108 Content-Type: "application/pdf" name="AM22831 - - Cover Sheet.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="AM22831 - - Cover Sheet.pdf" JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAyIDAgUgovQ29udGVudHMgNCAwICiUlRU9GCg== --080107000800000609090108 Content-Type: "application/pdf" name="AM22831 - - Manufacturing Status.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="AM22831 - - Manufacturing Status.pdf" cSAxMTMuMzkgMCAwIDMwLjUzIDE0LjE3IDU1MC41OCBjbSAvSTEgRG8gUQpxIDAuMDAwIDAuMDAwIDEuMDAwIHJnIEJUIDEzMC4zOSRU9GCg== --080107000800000609090108 

Вышеуказанное содержимое base64 дает правильный контент в файле PDF когда файл открывается, открывая его с помощью PDF Reader . Но файлы не входят в формат .pdf . То же самое происходит для .xls , .doc и всех других типов файлов. Все файлы поставляются в формате .dat со стандартным именем, а не с указанными именами.

Пожалуйста, помогите мне в решении этих вложений войти в необходимый file type с указанным именем файла.

NB: содержимое base64 в образце .eml файла усечено

Я нашел ответ сам. !! Заголовок Template_Attachment должен быть следующим:

 --080107000800000609090108 Content-Type: TEMPLATE_MIME_TYPE;name="TEMPLATE_FILE_NAME" Content-Transfer-Encoding: base64 Content-Disposition: attachment;filename="TEMPLATE_FILE_NAME" TEMPLATE_ATTACHMENT_CONTENT 

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

Надеюсь, это когда-нибудь кому-нибудь помогло бы 🙂

PS: так что фактический файл .eml будет выглядеть следующим образом, который работает отлично, как он должен делать

 MIME-Version: 1.0 Date: Tue, 16 Apr 2013 09:03:37 +0100 From: sender@emailhost.com To: recipient@emailhost.com Subject: Email subject Content-Type: multipart/mixed; boundary="080107000800000609090108" This is a message with multiple parts in MIME format. --080107000800000609090108 Content-Type: text/html <p><strong>Project Name: Some Project and the body continues...</p> --080107000800000609090108 Content-Type: application/pdf;name="AM22831 Cover Sheet.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment;filename="AM22831 Cover Sheet.pdf" JVBERi0xLjMKMyAwIG9iago8PC9UeXBlIC9QYWdlCi9QYXJlbnQgMSAwIFIKL1Jlc291cmNlcyAyIDAgUgovQ29udGVasdsDFDffjMBakdjKJHBzdHlsZT0iY29= --080107000800000609090108 Content-Type: application/excel;name="AM22831 Manufacturing Status.xls" Content-Transfer-Encoding: base64 Content-Disposition: attachment;filename="AM22831 Manufacturing Status.xls" DQoNCjx0YWJsZSBib3JkZXI9IjAiPg0KPHRyPg0KPHRkIGNvbHNwYW49IjMiIHJvd3NwYW49IjIiIGFsaWduPSJjZW50ZXIiPg0KICAgIDxoMSBzdHlsZT0iY29=