通过Interop库向多个收件人发送邮件C#

通过Interop库向多个收件人发送邮件C#

问题描述:

我正在开发一个具有邮件发送选项的桌面应用程序。我有以下的代码到和它的作品完美只有1个收件人:通过Interop库向多个收件人发送邮件C#

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); 
    }     
} 

我得到错误的粗线在那里我在下面的模式添加多个收件人: [email protected]。 COM; [email protected]

它适用于1个地址,但当我得到多个地址分开时抛出COM异常 - Outlook无法解析一个或多个名称。

希望你能帮助我。

+1

是否有任何理由不能使用'System.Net.Mail'? – mgnoonan 2012-08-02 12:06:03

+0

我需要标记和设置邮件的重要性级别,所以我选择它,System.Net.Mail提供这些吗? – neocorp 2012-08-02 13:45:06

+0

优先,是的。标记,不。 http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.aspx – mgnoonan 2012-08-02 14:36:22

您是否尝试将多个收件人添加到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循环使用的新对象。

+1

非常感谢你解决它! – neocorp 2012-08-03 07:06:14