PHP库生成EML电子邮件文件



我正在尝试从PHP生成EML文件。有没有什么库可以让我轻松地创建它们?我可以在互联网上找到一些ActiveX组件,但我宁愿使用更便携的组件。

我最终使用这种模板自己构建了MIME消息,其中每个字段都被TEMPLATE_<name>变量替换:

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

关于这篇文章中的文件附件的其他信息:附件名称和文件扩展名在电子邮件中不起作用*.eml

编辑(2018):自从写下这个答案以来,它似乎到处都被复制粘贴了,尤其是模板。为了避免与其他MIME数据发生任何冲突,您应该确保边界"080107000800000609090108"是唯一的——它是一个不超过70个字符的随机字符字符串。

我认为您不需要库。它只是纯文本(例如。http://bitdaddys.com/example1.eml)

Date: Sat, 12 Aug 2006 14:25:25 -0400
From: John Doe <jdoes@someserver.com>
Subject: BitDaddys Software
To: sales@bitdaddys.com
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()

使用imap_savebody(imap库的一部分http://us1.php.net/manual/en/function.imap-savebody.php)$part_number为空。它创建了一个漂亮的.eml文件,其中有一行代码和整个消息(null$part_number=所有部分…未记录但有效)。

另外两个解决方案取决于电子邮件的格式(第一个解决方案中只有一个附件,没有html部分,第二个解决方案只有文本电子邮件)。

imap_savebody创建一个完美的.eml文件,无论传入电子邮件的格式是什么(当然,只要是RFC投诉)。

相关内容

  • 没有找到相关文章

最新更新