2011-11-01 60 views
3

我通過PHP中的腳本發送了一堆電子郵件,我想分析每個郵件的結果,因此我知道它是否已發送。如何知道電子郵件是否使用PHP交付?

無論如何通過PHP來做到這一點?

+2

看一看這樣的: http://stackoverflow.com/questions/1900236/how-to-check-if-a-mail-was-received-with-php – greenLizard

回答

4

您可以檢查它已經發送,但檢查它已經交付完全是另一回事。

事實上,我想不出任何方式,以確認它也沒有檢查它就會被讀取已交付,這可以通過包含從服務器請求一個1x1 .gif注意的是,並記錄爲已訪問,或用戶必須訪問的鏈接才能查看郵件的完整內容。

都不能保證(並非所有的電子郵件客戶端都會顯示圖片或使用HTML),並且並非所有的「已發送」消息都會被讀取。

當然,你可以監視你的reply-to地址的任何退回的郵件,這將讓你肯定地說,一條消息已不是已交付。

+0

是的,我認爲檢查彈跳電子郵件將是最好的方法。謝謝。 – ragebunny

2

沒有真正好的方法 - 但是,您可以使用包含郵件地址和日誌請求的url來嵌入圖像。

+0

爲什麼downvote? – thejh

+0

,因爲有跟蹤退回的電子郵件的方法。 –

+0

@LukasLiesis這並不能告訴你郵件是否真的被髮送。這只是一個指標。 – thejh

3

如果郵件已發送可以很容易地檢測到,檢測它是否已經交付是另一種情況。

您可以做的是在您的網站上託管的電子郵件中實現1px圖像。這個圖像是由PHP創建的,所以你可以給它一個唯一的ID來檢測圖像是否被加載。如果你禁用它的緩存,你甚至可能會檢測到郵件讀取的頻率。

創建圖像是這樣的:

header('Content-Type: image/png'); 
    $im = @imagecreate(1, 1); 
    $background_color = imagecolorallocate($im, 255, 255, 255); // make it white 
    imagepng($im,"image.png"); 
    imagedestroy($im); 

商店這一個頁面調用image.php(或東西,給你)。商店也該電子郵件已經發送併爲它創建一個唯一的ID(MD5或SHA-1散列將是很好)

像一個數據庫:在對數據庫

$id = sha1([ID FROM DATABASE] + salt) 

店,這也一排電子郵件。

然後鏈接到圖像與ID

<img src="http://www.example.com/image.php?id=SHA1HASHHERE" /> 

這樣你就可以跟蹤

相關問題