這是不可能的。在這個宇宙中,現在絕對有辦法可以知道消息已經傳遞或沒有傳遞。
一些協議,如X400努力給予交貨單, 不幸的是總有一些情況下,當他們失敗。
因此,SMTP等Internet協議甚至不嘗試。他們 盡最大努力使其工作,但提供不保證,並且最重要的是,他們不保證任何反饋。
發送消息時,涉及到很多實體。你,你的UA,你的MTA,可能是一些中介MTA,收件人MTA, 收件人UA,收件人。那麼,不完全是。有 是你方有多個郵箱的機會,他 使用Web服務來收集電子郵件從他的幾箱收集 成一個單一的UA,所以它可能是這樣的:你,你的UA,您的MTA, 可能是一些中介MTA,收件人MTA,收藏者UA,收藏者MTA ,實際收件人MTA,實際收件人UA,收件人 。在這些實體的每一個之間,可能有一些積極或消極的承認水平。但就是這些。 實體N將知道該消息已被實體N + 1接收,鏈接爲 ,但隨後通信被關閉,並且它不會知道什麼是 發生,以及在實體N + 1和N + 2之間何時發生。如果有一個 問題有些運氣,MTA可能會向 發件人發送錯誤消息,但由於SPAM 和病毒,這不一定會做太多。嗯,最終,你的信息可能會到達最終收件人的UA。 在那裏,可能會做出一些事情來通知它已經收到, 或甚至可能顯示,在消息中帶有一些非標準化標題 的裝置。某些UA可以輕鬆配置以插入這些標頭,並遵守或不遵守。隱私和垃圾郵件/病毒savil 用戶將不會激活此功能(它允許地址收集到 很容易驗證一個電子郵件地址轉售給垃圾郵件發送者),所以 你會得到一個實際答案的概率將非常低 (除非你正在發送電子郵件到dumbasses)。
但即使此功能已激活並且運行良好,您收到由收件人的UA發送的消息告訴您 您的電子郵件已顯示的消息的事實並不能證明任何事實。值得注意的是, 並不能證明你的郵件已經被收件人查看過,更不用說他已經閱讀過了,更不用說他已經理解了!
總之,您可以在技術上確定您的消息已發送到鏈中的第一個實體 。就這樣。從那裏 上,玩它會被接收,閱讀和理解。
如果您想確定郵件是否已發送,您必須 使用更高級別的協議。舉例來說,如果你問 電子郵件期待一個答案A1或A2回答一個問題,你有四個 可能性:
你得到答案A1。 您可以假定郵件已發送並閱讀。 但它被理解了嗎?真的A1是收件人發送的答案嗎?
你會得到答案A2。 您可以假定郵件已發送並閱讀。 但它被理解了嗎?真的是A2接收者要發送的答案嗎?
你得到一個答案A3。 您可以假設郵件已發送,閱讀並且無法理解。
你在某些延遲中沒有得到答案。 你不能承擔任何事情。嘗試發送另一封電子郵件,引出答案。 如果你仍然沒有得到實際通信的確認 嘗試給收件人打電話。或親自見面。或者打在他面前 。如果你仍然沒有得到任何答案,你可以考慮你的 收件人昏迷或死亡,並假設該消息不通過。(有人認爲值得與昏迷中的某人 聯繫,但我相信這只是刺激他們的大腦纔好,你不能期望答案,他們不會開始回答你的積壓討論,當他們甦醒)。
您嘗試使用的課程無法正常工作。許多郵件服務器仍然使用灰名單,其中前幾個發送嘗試導致錯誤代碼(您必須運行2到3次,暫停以獲得明智的結果)。不能說任何關於黑名單的概率。 – mario 2011-05-30 12:14:16
@mario那麼最新的解決方案.. – 2011-05-30 12:17:48