0

テキストメッセージを送信するプログラムを作成していて、返信に応じて特定のアクションを実行したいと思います。とにかくここに私のコードがあります:

using Microsoft.Office.Interop.Outlook;
using Outlook = Microsoft.Office.Interop.Outlook;

static void Main()
{                        
    var outlook = new Microsoft.Office.Interop.Outlook.Application();

     // fire event when a new email arives
     outlook.NewMailEx += new ApplicationEvents_11_NewMailExEventHandler(oApp_NewMailEx);

     // etc
}

static void oApp_NewMailEx(string EntryIDCollection)
{
    var outlook = new Microsoft.Office.Interop.Outlook.Application();
    MailItem temp = (MailItem)outlook.Session.GetItemFromID(EntryIDCollection, Missing.Value);

    var body = temp.Body; // the body of the email is null! I tried waiting and it is null until I open it...
    Console.WriteLine(body);
}

この部分は重要ではありませんが、この関数を使用して「テキストメッセージ」を送信します。

// send text message "att.txt.net only works with at&t phones"
public static int SendEmail(string recipeint = "9546543930@att.txt.net")
{
        try
        {
            // Create the Outlook application by using inline initialization.
            Outlook.Application oApp = new Outlook.Application();


            //Create the new message by using the simplest approach.
            Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);



            Outlook.Accounts accounts = oMsg.Session.Accounts;
            foreach (Outlook.Account account in accounts)
            {
                // When the e-mail address matches, send the mail.
                if ( account.SmtpAddress.Contains("gmail") )
                {
                        oMsg.SendUsingAccount = account;                            
                        break;
                }
            }

            // If you want to, display the message.
            oMsg.Display(true);  //modal


            //Add a recipient.                
            Outlook.Recipient oRecip = (Outlook.Recipient)oMsg.Recipients.Add(recipeint);
            oRecip.Resolve();

            //Set the basic properties.
            oMsg.Subject = "This is the subject of the test message";
            oMsg.Body = "This is the text in the message.";


            //Add an attachment.
            // TODO: change file path where appropriate
            //String sSource = "C:\\setupxlg.txt";
            //String sDisplayName = "MyFirstAttachment";
            //int iPosition = (int)oMsg.Body.Length + 1;
            //int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
            //Outlook.Attachment oAttach = oMsg.Attachments.Add(sSource, iAttachType, iPosition, sDisplayName);



            //Send the message.
            oMsg.Save();
            oMsg.Send();

            //Explicitly release objects.
            oRecip = null;
            //oAttach = null;
            oMsg = null;
            oApp = null;
        }

            // Simple error handler.
        catch (System.Exception e)
        {
            Console.WriteLine("{0} Exception caught: ", e);
        }

        //Default return value.
        return 0;
}

そのため、Gmailアカウントでメールを送信でき、テキストメッセージに返信するとoApp_NewMailEx、新しいメールのIDで関数が実行されます。件名を取得することはできますが、メールにマウスを合わせるかメールを開くまで、本文はダウンロードされません。私はすでに別のスレッドで2分間待ってから、本体を確認しようとしましたが、それでもnullでした。


私が持っているこの作品を作るためにメモを編集してください:

ここに画像の説明を入力してください

管理者としてOutlookを実行しなかったため、灰色で表示されます。管理者としてOutlookを実行すると、セキュリティ設定を更新できます。

また、MicrosoftOutlook14.0オブジェクトライブラリを参照としてインポートしました。

4

1 に答える 1

0

メールを受信したら、送受信メソッドを呼び出しました。少し待ってから、体を読むことができました。

  outlook.Session.SendAndReceive(false);
于 2013-03-06T23:01:49.843 に答える