我正在尝试从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/