如何使用 PHPMailer 附加 .eml 文件?

Posted

技术标签:

【中文标题】如何使用 PHPMailer 附加 .eml 文件?【英文标题】:How can I Attach a .eml File Using PHPMailer? 【发布时间】:2021-06-22 05:33:42 【问题描述】:

我正在尝试将 .eml 文件附加到我在 phpMailer 中发送的电子邮件中。我现在正在这样做:

$mail->addStringAttachment("/var/www/virtual/xxx.xxx.com/html/test_sample_message.eml", 'test.eml', 'base64', 'message/rfc822');

它确实附加了一个 .eml 文件,但它始终是空的。另外,我尝试这样做:

$mail->addStringAttachment($body, 'test.eml', 'base64', 'message/rfc822');

如果我这样做,结果相同(电子邮件文件已附加,但它是空的)。

我在这里做错了什么? 谢谢。

【问题讨论】:

为什么不使用addAttachment?根据phpmailer.github.io/PHPMailer/classes/…,对于 addStringAttachment 它说This method can be used to attach ascii or binary data, such as a BLOB record from a database - 即一串数据,而不是文件。 addAttachment 用于附加现成的文件。 嗨 ADyson - 我尝试使用 addAttachment,结果相同:附加了一个空白 eml 文件。有任何想法吗? (不知道是否有区别,但我什至将 eml 文件的权限更改为尽可能少的限制。) 检查任一调用的返回值,不要假设它正在工作。 @Synchro - 你指的是 addAttachment 的结果吗?我这样做了 - $val = $mail->addAttachment("/var/www/virtual/beta.phishingbox.com/html/test_sample_message.eml"); print_r($val);退出(“出”); - 它返回 true。 在这种情况下,我建议设置一个断点并检查调用 send() 后读取文件时发生的情况。还要检查 SMTP 脚本(设置 SMTPDebug = 2),这样您就可以准确地看到发送的内容。 【参考方案1】:

删除代码:函数_mime_types($ext = '')中的'eml' => 'message/rfc822'

然后使用addAttachment()

【讨论】:

【参考方案2】:

这成功了:

$mail->addStringAttachment($body, 'Original Email.eml', 'base64', 'application/octet-stream');

【讨论】:

以上是关于如何使用 PHPMailer 附加 .eml 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHPMailer 从 PC 将文件附加到电子邮件

如何使用PHPMailer将多个文件附加到两个不同的电子邮件中?

PHPMailer - 使用 URL 附加远程文件

PHPMailer 不发送带有附加 zip 文件的邮件

使用 dompdf 的 phpmailer 动态文件

使用 mPDF 和 PHPmailer 即时附加 PDF