4

メール送信オプションのあるデスクトップアプリケーションを開発しています。私はそれに次のコードを持っています、そしてそれはたった一人の受信者のために完璧に働きます:

DialogResult status;
status = MessageBox.Show("Some message", "Info", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);
if (status == DialogResult.OK)
{
    try
    {
        // Create the Outlook application.
        Outlook.Application oApp = new Outlook.Application();
        // Create a new mail item.
        Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);

        // Set HTMLBody. 
        //add the body of the email
        oMsg.HTMLBody = "<html>" +
                "<body>" +
                "some html text" +
                "</body>" +
                "</html>";

        int iPosition = (int)oMsg.Body.Length + 1;
        //Subject line
        oMsg.Subject = txt_mailKonu.Text;
        oMsg.Importance = Outlook.OlImportance.olImportanceHigh;
        // Recipient
        Outlook.Recipients oRecips = (Outlook.Recipients)oMsg.Recipients;    
        //Following line causes the problem  
        Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(senderForm.getRecipientList().ToString());
        oRecip.Resolve();
        //oRecip.Resolve();
        // Send.
        oMsg.Send();
        // Clean up.
        oRecip = null;
        oRecips = null;
        oMsg = null;
        oApp = null;
        MessageBox.Show("Successful", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    catch (Exception)
    {
        MessageBox.Show("Failed", "Eror", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }                
}

次のパターンで複数の受信者を追加している太字の行でエラーが発生します:john.harper@abcd.com; adam.smith@abcd.com

1つのアドレスで正常に機能しますが、複数のアドレスを分離すると、COM例外がスローされます-Outlookは1つ以上の名前を解決できません。

あなたがこれで私を助けてくれることを願っています。

4

1 に答える 1

2

複数の受信者をに追加しようとしましたoMsg.Recipientsか?

// I assume that senderForm.getRecipientList() returns List<String>
foreach(String recipient in senderForm.getRecipientList())
{
    Outlook.Recipient oRecip = (Outlook.Recipient)oRecips.Add(recipient);
    oRecip.Resolve();
}

必要に応じて、爆発する可能性がありsenderForm.getRecipientList().ToString()ます

String [] rcpts = senderForm.getRecipientList().ToString().Split(new string[] { "; " }, StringSplitOptions.None);

foreachループ内で新しいオブジェクトを使用します。

于 2012-08-02T12:26:27.820 に答える