2013-04-16 4 views
7

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

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

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); 
    } 

Шаблон Приложение

--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: [email protected] 
To: [email protected] 
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 усекается

ответ

5

Я нашел ответ мой сам .. !! Заголовок 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: [email protected] 
To: [email protected] 
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= 
Смежные вопросы