我有PHP发送到Gmail帐户的电子邮件可疑Message-ID头:
Message-Id: <5100054f.a489440a.5d93.6a70SMTPIN_ADDED_MISSING@mx.google.com>
你能告诉它有这个奇怪的形式以及SMTPIN_ADDED_MISSING意思吗? 例如我在网上看到有格式是这样的含发送域,但我的消息ID不包含由于某种原因:
38D1C1FD-3C35-4568-925C-FC46CAC0DE8A@sendinghost.com
我不认为我的Zend_Mail设置此头。 什么生成此头? 你看到这个标题的任何问题?
一个适当的出站的电子邮件客户端应生成Message-ID
时被发送的电子邮件报头中。 谷歌正在“好”而当消息通过其电子邮件系统生成它适合你,但大多数不会,并且该邮件很可能是垃圾邮件大部分垃圾邮件过滤器将以此缺少的头作为标志。 任何畸形或缺失的标题将添加到“垃圾邮件分数”。
由此不难产生,所需要的所有是,它是每个消息独特之处:
$message-id = time() .'-' . md5($sender . $recipient) . '@' $_SERVER['SERVER_NAME'];
要么
$message-id = time() .'-' . md5($sender . $recipient) . '@yourdomain.com';
得到:
1358961017-677533f745f613447d06de25e7fa4d32@yourdomain.com
谷歌SMTP,如果缺少它产生。 这个头必须由第一SMTP服务器进行设置。 所以,你不产生了 - 谷歌没有。 它是用来防止多种交付及相关的消息联系在一起。
它不要求设置邮件ID头,但它像一个很好的做法对于大多数(但不是全部,只是配置)SMTP增加(可能是修复)这个头。 因此,为了避免产生此头被别人你可以自己生成它。
这一次对我的作品(我还添加了一个“日期”行头,因为它是一个垃圾邮件的问题我也一样)。 基于这个和平的代码 。
这里是我的PHP阵列的方法(使用PEAR的邮件和MIME库):
$headers = array(
'From' => $from,
'Subject' => $subject,
'To' => $to,
'Cc' => '',
'Date' => date('r'),
'Message-ID' => sprintf("<%s.%s@%s>",
base_convert(microtime(), 10, 36),
base_convert(bin2hex(openssl_random_pseudo_bytes(8)), 16, 36),
'youdomain.com')
);
请注意,使用$_SERVER['SERVER_NAME']
而不是字面'youdomain.com'
不会在PHP CLI工作由奥列格在另一个答案注释掉。
我使用相同的MessageId跟踪交换的消息。
我修正了邮件ID:
$mail->MessageID =sprintf('<%s@%s>', $myMessageID, 'myserver');
TL;博士; 发送电子邮件,而不是使用端口587时,不要使用端口25
当我从我的自定义发送出站电子邮件创建使用端口25 golang电子邮件客户端与目标电子邮件地址Gmail或我的本地服务器后缀谷歌gsuite地址经过我所看到的
Message ID <5be55db9.1c69fb81.d0444.d894SMTPIN_ADDED_MISSING@mx.google.com>
Gmail中的目标电子邮件地址经过观察Show Original
......不过,因为我用我golang电子邮件客户端和本地服务器后缀既充分TLS证书,当我顶替使用端口25,在我出站的电子邮件客户端的安全端口587(后缀已经使用TLS证书),然后我得到正确的
Message ID <20181109163255.F164D8E9588@mail.myexample.com>
注-在任何时候我在定义电子邮件标题message-id
INFACT我使用的是没有一个API调用来定义标题中的golang回购