PHPMailer:替换默认的messageID

Posted

技术标签:

【中文标题】PHPMailer:替换默认的messageID【英文标题】:PHPMailer : replace the default messageID 【发布时间】:2017-02-12 20:45:03 【问题描述】:

我使用 phpMailer 发送电子邮件,evthg 运行良好,但我会为每封电子邮件设置一个唯一的 MessageID。

PHPMailer 版本:“v5.2.16”

(从 https://github.com/PHPMailer/PHPMailer.git 加载 Composer)

我在这里找到了文档: http://phpmailer.github.io/PHPMailer/classes/PHPMailer.html#property_MessageID

所以这是我尝试过的:

 $mail = new PHPMailer;
 ...
 $mail->MessageID = md5('HELLO'.(idate("U")-1000000000).uniqid()).'-'.$type.'-'.$id.'@domain.com';

结果:这始终是 PHPMailer 生成的默认 MessageID:

不是我的... :(

然后我尝试了更简单的东西:

 $mail->MessageID = "blablag@domain.com";

结果:KO(相同)

文档说明我们可以设置一个MessageID,而且应该是一个字符串,我完全不明白为什么它不起作用...

有什么想法吗?

【问题讨论】:

【参考方案1】:

MessageID的结构应该是:

<sometext@sometext>

如果您的 MessageID 没有这种确切的结构 - PHPMailer 将忽略您的 MessageId 并生成它自己的 MessageId。

您可以将代码更改为:

$mail->MessageID = "<" . md5('HELLO'.(idate("U")-1000000000).uniqid()).'-'.$type.'-'.$id.'@domain.com>';

它应该可以工作。

【讨论】:

是的,我查看了 phpMailer 类中的 preg_match 规则,就是这样,我忘了结束我的问题,愚蠢的错误......但谢谢!

以上是关于PHPMailer:替换默认的messageID的主要内容,如果未能解决你的问题,请参考以下文章

phpmailer 自动包含本地图片

PHPMailer 发送 base64 图像

php使用PHPMailer发送邮件

使用PHPMAILER实现PHP发邮件功能

phpmailer 发送Outlook邮件时535 5.7.3 authentication unsuccessful错误的解决办法

phpmailer 发送Outlook邮件时535 5.7.3 authentication unsuccessful错误的解决办法