2013-04-16 8 views
7

Chcę tworzyć pliki e-mail w formacie .eml z wieloma załącznikami. Załączniki są generowane, a zawartość załączników jest poprawna. Ale zawsze się załączniki w formacie .dat i nazwy plików iść jako „ATT00001”, „ATT0002” .. etcNazwa załącznika i rozszerzenie pliku nie działa w wiadomości e-mail * .eml

Obecnie jestem po rozwiązania podanego w this stackoverflow question i mojego kodu jest następująco

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

Szablon Załącznik

--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 to główny nagłówek i treść wiadomości e-mail zgodnie z opisem w powyższym łączu. Mój plik .eml wygląda jak;

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 

Powyższy base64 zawartość daje odpowiednią zawartość w pliku PDF gdy plik otwarty wybierając otworzyć z PDF Reader. Ale pliki nie są w formacie .pdf. To samo dzieje się dla .xls, .doc i wszystkich innych typów plików. Wszystkie pliki są w formacie .dat ze standardową nazwą, a nie podanymi nazwami.

Proszę pomóc mi rozwiązać te załączniki w wymaganym file type o określonej nazwie pliku.

Uwaga: Zawartość w przykładowym pliku .emlbase64 jest obcinany

Odpowiedz

5

Znalazłem odpowiedź moje ja .. !! Nagłówek Template_Attachment powinna być następująca

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

TEMPLATE_ATTACHMENT_CONTENT 

Gdzie 080107000800000609090108 jest granica w tym przypadku i na końcu wszystkich załączników, powinno być kolejnym 080107000800000609090108 zakończyć mail.

Nadzieja to byłoby pomocne dla kogoś kiedyś :-)

PS: tak rzeczywisty plik .eml będzie wyglądać następująco który działa idealnie jak powinno zrobić

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= 
Powiązane problemy