2013-04-16 30 views
7

Tôi muốn tạo tệp email ở định dạng .eml với nhiều tệp đính kèm. Tệp đính kèm được tạo và nội dung của tệp đính kèm là chính xác. Nhưng file đính kèm luôn quay ở định dạng .dat và tên file đi là "ATT00001", "ATT0002" .. vvTên tệp đính kèm và đuôi tệp không hoạt động trong email * .eml

Hiện nay tôi đang theo giải pháp được đưa ra trong this stackoverflow question và mã của tôi là như sau

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

mẫu đính kèm

--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 là tiêu đề email chính và nội dung như được mô tả trong liên kết ở trên. Tệp .eml của tôi trông giống như;

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 

Trên đây base64 nội dung cho đúng nội dung trong PDF tập tin khi tập tin mở bằng cách chọn để mở với một PDF Reader. Nhưng các tệp không có định dạng .pdf. Điều tương tự cũng xảy ra cho .xls, .doc và tất cả các loại tệp khác. Tất cả các tệp đều có định dạng .dat có đặt tên chuẩn thay vì tên được chỉ định.

Vui lòng giúp tôi giải quyết tệp đính kèm này có trong yêu cầu file type với tên tệp được chỉ định.

NB: Nội dung base64 trong tệp mẫu .eml là cắt ngắn

Trả lời

5

Tôi tìm thấy câu trả lời tự của tôi .. !! Tiêu đề của Template_Attachment nên càng sau

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

TEMPLATE_ATTACHMENT_CONTENT 

đâu 080107000800000609090108 là ranh giới trong trường hợp này và ở phần cuối của tất cả các file đính kèm, cần có một 080107000800000609090108 để kết thúc email.

Hy vọng điều này sẽ giúp ích cho ai đó một ngày nào đó :-)

PS: nên thực tế .eml tập tin sẽ trông giống như sau đó hoạt động hoàn hảo như nó phải làm

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= 
Các vấn đề liên quan