2008-08-10 80 views
10

任何人都可以推薦軟件或.NET庫,檢查反彈的電子郵件和彈跳的原因?然後我將彈出的電子郵件轉換成我可以閱讀的pop3帳戶。通過POP3自動檢查退回的電子郵件?

我需要它來保持我的用戶數據庫清潔無效的電子郵件地址,並希望自動執行此操作(將用戶標記爲無效的電子郵件地址)。

回答

5

我已經完成了大量處理退回郵件的工作,並且出現了不同的類型。如果你想確保你看到的電子郵件確實是某種特定類型的反彈,我強烈建議你找一個好的過濾器。我曾與Boogie Tools工作,它工作得很好。它可以讓你知道它是什麼樣的反彈,硬,軟,瞬態或者甚至有人試圖取消訂閱。它有一個包含.Net的多種API,我發現它很容易工作。

2

使用TcpClient很容易。打開服務器:

TcpClient tcpClient = new TcpClient(); 
tcpClient.Connect(POP3Server, POP3Port); 
NetworkStream stream = tcpClient.GetStream(); 

閱讀歡迎消息:

int read = stream.Read(inBuffer, 0, inBuffer.Length); 
string response = Encoding.ASCII.GetString(inBuffer, 0, read); 
if (response.IndexOf("+OK") != 0) throw new ...; 

寫回服務器:

byte[] outBuffer = Encoding.ASCII.GetBytes("USER " + account + "\r\n"); 
stream.Write(outBuffer, 0, outBuffer.Length); 

發送該用戶命令。您需要登錄,然後才能開始抓取郵件 - 請參閱POP3 RFC以獲取完整的命令列表。如果你不打算自己查看這個CodeProject article

3

作爲abfo says,POP3協議是非常簡單的,得到這些消息是一件簡單的事情。解析消息以獲得失敗更加困難,並且可靠地解析出哪些電子郵件導致失敗以及失敗的原因非常困難。問題是退回消息沒有標準格式,默認形式因MTA而異。然後失敗的原因可以由網站管理員調整,使其難以識別,並且網站管理員可以修改失敗消息模板,這使得它幾乎不可能。

看看您是否可以找到.NET郵件列表管理器,以及是否可以重新設計反彈處理代碼。否則,請查看是否可以更改發送郵件的工具,以便通過獨特的(可逆的)封包發件人發送每封電子郵件(VERP,我認爲它被稱爲?)。這樣,您不需要掃描電子郵件的正文,就可以通過檢查失敗消息的收件人地址來確定哪個收件人失敗。

0

感謝您的回答,太棒了! 我自己做了一些研究,發現ListNanny - 也非常簡單易用,並告訴你反彈的類型。將寫一些概念證明,看看我更喜歡哪一個...

0

你的問題讓我意識到,我將要使用的WordPress通訊插件,沒有反彈管理,我也需要一些東西。

我環顧了一會兒,我已經在自由和開源PHPlist newsletter manager上解決了。

他們詳細描述their settings for handling bounces,他們確實有一個實驗advanced bounce handling feature,這將允許您自定義反彈處理完全按照你想要的方式。

Evem如果你決定不使用PHPlist,閱讀他們如何做它將是有用的信息給你。