我正在尝试从PHP生成EML文件。有没有可以让我轻松创建它们的库?我可以在Internet上找到一些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);

这篇文章中有关文件附件的其他信息:Attachment name and file extension not working in email *.eml

编辑(2018):由于编写了此答案,似乎它已被复制并粘贴到了很多地方,尤其是模板。为避免与其他MIME数据发生任何冲突,您应确保边界“080107000800000609090108”是唯一的-它是一串不超过70个字符的随机字符。

关于PHP库生成EML电子邮件文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8776481/

10-15 03:43