php发送的电子邮件中的Message-Id有什么问题

Ole*_*leg 14 php email smtp zend-mail

我有一个由php发送到gmail帐户的电子邮件的可疑消息ID标题:

Message-Id: <5100054f.a489440a.5d93.6a70SMTPIN_ADDED_MISSING@mx.google.com>
Run Code Online (Sandbox Code Playgroud)

你能否告诉它是否有这种奇怪的格式以及SMTPIN_ADDED_MISSING在这里的含义?我在互联网上看到的示例包含这样的格式包含发送域,但我的消息ID由于某种原因不包含它:

38D1C1FD-3C35-4568-925C-FC46CAC0DE8A@sendinghost.com
Run Code Online (Sandbox Code Playgroud)

我不认为我在Zend_Mail中设置此标头.什么生成此标题?你看到这个标题有什么问题吗?

Sam*_*tch 17

发送电子邮件时,正确的出站电子邮件客户端应生成Message-ID标头.当消息通过其电子邮件系统时,Google正在"很好"并为您生成,但大多数情况下不会,并且大多数垃圾邮件过滤器会将此丢失的标头作为消息更可能是垃圾邮件的指示.任何格式错误或丢失的标题都会添加到"垃圾邮件分数"中.

生成并不困难,所需要的只是每个消息是唯一的:

$message-id = time() .'-' . md5($sender . $recipient) . '@' $_SERVER['SERVER_NAME'];
Run Code Online (Sandbox Code Playgroud)

要么

$message-id = time() .'-' . md5($sender . $recipient) . '@yourdomain.com';
Run Code Online (Sandbox Code Playgroud)

得到:

1358961017-677533f745f613447d06de25e7fa4d32@yourdomain.com
Run Code Online (Sandbox Code Playgroud)

  • 就像我说的,'任何格式错误或丢失的标题都会增加“垃圾邮件分数”。SMTP 服务器*应该*添加它,但你的显然不是。 (2认同)

clo*_*ver 6

如果丢失,Google SMTP会生成它.此标头必须由第一个SMTP服务器设置.所以你不生成它 - 谷歌.它用于防止多次传递并将相关消息链接在一起.

不需要设置消息ID标头,但对于大多数(但不是全部,仅配置)smtp来说,添加(可能是修复)此标头是一种很好的做法.因此,为了避免其他人生成此标头,您可以自己生成它.