0

c#.net アプリケーションからメールを送信しようとしています。次のコードを使用しました。

var mailItem = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
    mailItem.Subject = "Error Report from user: " + AuthenticationManager.LoggedInUserName;
    mailItem.HTMLBody = "Test email\n"+ReadSignature();
    mailItem.To = "test@test.com";
    mailItem.Display(true);

メールは送信されませんが、送信トレイ フォルダーに追加されます。Outlook が起動していないため、メールが送信されていないと思われます。だから私はググってこれを思いついた:

        var oApp = new Outlook.Application();

        Microsoft.Office.Interop.Outlook.NameSpace ns = oApp.GetNamespace("MAPI");
        var f = ns.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);

        Thread.Sleep(5000); // a bit of startup grace time.

        var mailItem = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
        mailItem.Subject = "Error Report from user: " + AuthenticationManager.LoggedInUserName;
        mailItem.HTMLBody = "Test email\n"+ReadSignature();
        mailItem.To = "test@test.com";

        mailItem.Display(true);

しかし、もう一度それは送信トレイフォルダーに行き着きます。すべてのクライアント application.config で FromMail プロパティを指定できないため、Outlook を起動する必要があります。何か案は?

4

3 に答える 3

3

MailItem.Sendメソッドを呼び出す必要があります。

mailItem.Send();
于 2013-09-30T10:00:47.107 に答える
0

Namespace.SyncObjects コレクションまたは Namespace.SendAndReceive メソッドを使用して同期を開始してみてください。

メッセージの送信は非同期プロセスであるため、メッセージが実際に送信されるまで Namespace オブジェクトと SyncObject (使用している場合) への参照を保持する必要があることに注意してください。

于 2013-09-30T14:48:17.197 に答える