私はこのようなものと同じ機能を実現したい:
SMTP サーバーが新しい電子メールを受信したときに C# クライアントに通知する
これはうまくいっています。そのメソッド「NewMessageReceived」は、新しいメールが受信されるたびに正常に呼び出されます。
しかし問題は、メールを取得できないことです。このメソッドでは、INBOX の合計数しか取得できませんでした。
ライブラリを使用したこのコード: MailSystem.net
次のような私のコード:
Imap4Client _imap;
public static int cnt = 0;
protected void Application_Start(object sender, EventArgs e)
{
var worker = new BackgroundWorker();
worker.DoWork += new DoWorkEventHandler(StartIdleProcess);
if (worker.IsBusy)
worker.CancelAsync();
worker.RunWorkerAsync();
}
private void StartIdleProcess(object sender, DoWorkEventArgs e)
{
if (_imap != null && _imap.IsConnected)
{
_imap.StopIdle();
_imap.Disconnect();
}
_imap = new Imap4Client();
_imap.ConnectSsl(ConfigurationManager.AppSettings["IncomingServerName"], Convert.ToInt32(ConfigurationManager.AppSettings["InPort"]));
_imap.Login(ConfigurationManager.AppSettings["EmailAddress"], ConfigurationManager.AppSettings["Password"]);
var inbox = _imap.SelectMailbox("INBOX");
_imap.NewMessageReceived += new NewMessageReceivedEventHandler(NewMessageReceived);
inbox.Subscribe();
_imap.StartIdle();
}
public static void NewMessageReceived(object source, NewMessageReceivedEventArgs e)
{
cnt = e.MessageCount; //Inbox Count
//here i want to fetch all unread mail from inbox
}
未読メールを取得する次の解決策を見つけました。
http://mailsystem.codeplex.com/discussions/651129
MailKitライブラリを使用するように言っています。私はすでにMailSystem.netライブラリを使用しているため、ライブラリを 1 つだけ使用して要件を達成する方法はありますか?
他のライブラリも使用する準備ができています。
提案をお願いします。ありがとう