3

MailSystem.NET に詳しい人はいますか?

Gmail アカウントの新着メールを定期的にチェックするアプリがあります。件名に特定の語句が含まれている場合、アクションが実行されます。ただし、特定のメッセージを未読としてマークするには、アプリを少し変更する必要があります。

これが既存のコードです。ボタンをクリックすると、logInLogOut() サブルーチンが呼び出され、別のスレッドで checkNewMail() サブルーチンを呼び出すことによってアプリが定期的に新着メールをチェックするタイマーが開始されます。アプリは意図したとおりに動作しますが、以下は最善の方法ではない可能性があります.

private void logInLogOut()
{
    try
    {
        Client.ConnectSsl(txtIMAPServer.Text, int.Parse(txtIMAPPort.Text));
        Client.Login(@txtUserName.Text, txtPassword.Text); 
        globalClientConnected = true;

    }
    catch (Exception ex)
    {
        globalClientConnected = false;

    }
}    


private void checkNewMail()
{
    if (globalClientConnected)
    {
        foreach (ActiveUp.Net.Mail.Message email in GetUnreadMails("Inbox"))
        {
            string from = parseEmailAddress(email.From.ToString());
            string subject = email.Subject;
            string receivedDateTime = email.ReceivedDate.Date.ToString()

            string updateString = receivedDateTime + ", " + from + ", " + subject + "\r\n";

            if (subject.Contains("ABC"))
            {
                string to = from;

                try
                {              
                    //do something
                }
                catch (Exception ex)
                {
                    //bla bla
                }
            }
            else
            {
                //If mail subject not like "ABC"
                //Do something else

                //Mark the mail as unread
            }
        }


    }


}
4

2 に答える 2

2

よく知られていませんが、ソースコードに例があります。

        Imap4Client imap = new Imap4Client();
        imap.Connect("mail.myhost.com");
        imap.Login("jdoe1234","tanstaaf");
        Mailbox inbox = imap.SelectInbox("inbox");
        FlagCollection flags = new FlagCollection();
        flags.Add("Read");
        flags.Add("Answered");
        inbox.AddFlags(1,flags);

//Message is marked as read and answered. All prior flags are unset.
        imap.Disconnect();
于 2012-10-26T08:42:38.570 に答える