2012-04-16 68 views
1

我有2種郵件功能,比如:PHP的mail()函數在錯誤的順序執行

mail($from, '', 'mail1', $headers); 
mail($from, '', 'mail2', $headers); 

如果我從$我自己的電子郵件地址進行測試,有時我收到MAIL1第一,有時我首先收到mail2。我想要總是先收到mail1。我試圖在兩個郵件功能之間放置一段時間,但沒有奏效。

+0

您確定這不僅僅是由於郵件傳遞服務器中的隨機延遲和延遲而發生的嗎? – Jazz 2012-04-16 20:21:20

+0

兩個不同域的地址是?還有很多不僅僅是郵件調用的順序。 – Cfreak 2012-04-16 20:21:39

回答

6

你不行。您收到郵件的順序不取決於您。郵件可能需要很多路徑,並且在任何SMTP服務器上都會被延遲。

你可以做的最好的辦法是僞造日期標題,使一個電子郵件顯示比另一個早一分鐘。大多數郵件客戶端將按發送日期排列。不過要謹慎,並且不要太過分。垃圾郵件製造者使用相同的策略,電子郵件提供商知道這一點。

+2

郵政服務也是如此。只需在信箱中放入一封信件,然後再郵寄另一封信件並不意味着郵政承運人將以相同的順序遞送郵件。 – 2012-04-16 20:21:33

+2

@MikeB,我想我們總是可以封裝普通郵件,在信封上寫下seq號碼,這樣我們就可以在接收時重新排列它們。如果有任何東西丟失了,我們總是可以郵寄一個NACK信封。 :-D – Brad 2012-04-16 20:25:40

+0

布拉德是對的 - 我們應該做所有這些事情。大聲笑 – Kristian 2012-04-16 20:27:04

1

當您的mail函數執行後,郵件的實際交付留給郵件服務器。也就是說,在從服務器/ PHP代碼釋放對電子郵件的控制權後,您無法控制首先到達收件箱的內容。

閱讀Mail Transfer Agents以及它們如何操作。