2012-01-08 124 views
6

我試圖從PHP生成EML文件。是否有任何圖書館可以讓我輕鬆創建它們?我可以在互聯網上找到一些ActiveX組件,但寧可使用更便攜的東西。PHP庫來生成EML電子郵件文件?

+0

你想從頭開始創建它,還是在用imap函數閱讀電子郵件之後創建它?也許imap_savebody()可以幫助 - http://www.csschat.com/archive/index.php/t-3287.html? – BartekR 2012-01-08 09:34:47

+0

是的,我需要從頭開始創建它。我基本上有一個電子郵件,標題,正文和附件,並需要爲此創建EML。 – 2012-01-08 09:41:21

回答

8

我結束了使用這種模板,其中,每個字段由TEMPLATE_<name>變量替換構建MIME消息自己:

From: TEMPLATE_FROM_ADDRESS 
MIME-Version: 1.0 
To: TEMPLATE_TO_ADDRESS 
Subject: TEMPLATE_SUBJECT 
Content-Type: multipart/mixed; boundary="080107000800000609090108" 

This is a message with multiple parts in MIME format. 
--080107000800000609090108 
Content-Type: text/plain 

TEMPLATE_BODY 
--080107000800000609090108 
Content-Type: application/octet-stream;name="TEMPLATE_ATTACH_FILENAME" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment;filename="TEMPLATE_ATTACH_FILENAME" 

TEMPLATE_ATTACH_CONTENT 
--080107000800000609090108 

然後創建最終的消息是很簡單使用str_replace

$content = file_get_contents("Template.eml"); 
$content = str_replace("TEMPLATE_FROM_ADDRESS", $fromEmail, $content); 
$content = str_replace("TEMPLATE_TO_ADDRESS", $toEmail, $content); 
// etc. for each template parameter 
// Also don't forget to base64_encode the attachment content; 
$content = str_replace("TEMPLATE_ATTACH_CONTENT", base64_encode($attachContent), $content); 

關於這個職位的文件附件附加信息:Attachment name and file extension not working in email *.eml

4

我認爲你不需要一個庫。這只是純文本(例如http://bitdaddys.com/example1.eml

Date: Sat, 12 Aug 2006 14:25:25 -0400 
From: John Doe <[email protected]> 
Subject: BitDaddys Software 
To: [email protected] 

Dear BitDaddys Corp., 

We have added your software to our approved list. 

Thank you for your efforts. 

Sincerely, 
John Doe 
Some Server Company 

你可以用頭只輸出文本,並保存它使用的fwrite。對於附件使用base64_encode()作爲陳述here

+3

重要的是它應該遵循SMTP語義 - 即每個頭部末尾的CRLF和頭部和主體之間的空行(由CRLF終止)。身體應該被傳輸編碼爲7bit ascii(或引用可打印)。 – symcbean 2012-01-08 13:02:17

2

使用空白$ part_number的imap_savebody(imap庫的一部分http://us1.php.net/manual/en/function.imap-savebody.php)。它用一行代碼和整個消息創建一個美麗的.eml文件(null $ part_number =所有部分...沒有記錄但可行)。

另外兩個解決方案取決於電子郵件的格式(第一個解決方案中只有一個附件,沒有html部分,第二個解決方案只有文本電子郵件)。

imap_savebody創建一個完美的.eml文件,不管輸入電子郵件的格式如何(只要它是RFC投訴)。

+0

'section number'表示'$ part_number'參數 – redexp 2017-01-30 15:10:38

相關問題