2013-01-23 75 views
11

送我通過PHP發送到Gmail帳戶的電子郵件可疑Message-ID頭的問題:什麼用郵件ID電子郵件通過PHP

Message-Id: <[email protected]> 

你能告訴它有這個奇怪的格式是什麼SMTPIN_ADDED_MISSING表示在這裏?例如我在網上看到有格式是這樣的含發送域,但我的消息ID不包含由於某種原因:

[email protected] 

我不認爲我的Zend_Mail設置這個頭做。什麼產生這個頭文件?你看到這個頭的任何問題嗎?

回答

6

谷歌SMTP,如果缺少它產生。該標頭必須由第一臺SMTP服務器設置。所以你不會生成它 - 谷歌。它用於防止多次交付並將相關消息鏈接在一起。

不要求設置郵件ID頭,但它像一個很好的做法對於大多數(但不是全部,只是配置)SMTP增加(可能是修復)這個頭。所以爲了避免別人生成這個頭文件,你可以自己生成頭文件。當發送電子郵件

+1

我應該把它從PHP還是應該服務器SMPT服務器添加呢?如果message_id包含發送地址的服務器域,如下所示:[email protected]? – Oleg

+0

您的意思是說,如果發送的電子郵件中沒有消息標識,收到的電子郵件會生成消息並添加到消息中? – Oleg

+0

SMTP服務器在不存在時生成它。從PHP生成並不是必須的。它包含@domain部分。建議http://www.jwz.org/doc/mid.html – clover

13

一個適當的出站的電子郵件客戶端應生成Message-ID報頭。谷歌正在「好」而當消息通過其電子郵件系統生成它適合你,但大多數不會,並且該郵件很可能是垃圾郵件大部分垃圾郵件過濾器將以此缺少的頭作爲標誌。任何格式不正確或缺失的標題將添加到「垃圾郵件分數」中。

不難產生,這需要所有的是,它是獨一無二的每個消息:

$message-id = time() .'-' . md5($sender . $recipient) . '@' $_SERVER['SERVER_NAME']; 

或者

$message-id = time() .'-' . md5($sender . $recipient) . '@yourdomain.com'; 

給出:

[email protected] 
+0

你是說的由於缺少將垃圾MESSAGE_ID增加的機會? – Oleg

+0

可以message_id包含發送電子郵件的smpt服務器的域名嗎? – Oleg

+0

不要smpt服務器自動添加message_id,它應該添加形式的應用程序,對不對? – Oleg

0

我使用相同的MessageId來跟蹤交換的消息。

我修復與郵件ID:

$mail->MessageID =sprintf('<%[email protected]%s>', $myMessageID, 'myserver');