Search code examples
c#outlookinteropvisual-studio-2005office-2007

How to add multiple recipients to mailitem.cc field c#


Oki, so im working on outlook .msg templates. Opening them programmatically, inserting values base on what's in my db.

ex. when i want to add multiple reciepients at "To" field, instead of doing as following,

   mailitem.To = a + ";" + b + ";" + c;

i do whats below, which is simpler, especially when i'm doing it in a loop.

   mailitem.Recipients.add("a");
   mailitem.Recipients.add("b");
   mailitem.Recipients.add("c");

My problem is, i also want to add multiple recipients at "CC" field and the function above only works for "To" field. How can i add multiple recipients to "CC" field without having to do string manipulation.

normally i would add recipients to cc like so,

   mailitem.CC = a + ";" + b + ";" + c;

im using interop.outlook and creating an mailitem from template.

Thanks in advance.


Solution

  • Suppose If you have two List of recipients, then you can do like this.

    Edit: Included full code.

    var oApp = new Microsoft.Office.Interop.Outlook.Application();
    var oMsg = (MailItem) oApp.CreateItem(OlItemType.olMailItem);
    
    Recipients oRecips = oMsg.Recipients;
    List<string> sTORecipsList = new List<string>();
    List<string> sCCRecipsList = new List<string>();
    
    sTORecipsList.Add("ToRecipient1");
    
    sCCRecipsList.Add("CCRecipient1");
    sCCRecipsList.Add("CCRecipient2");
    sCCRecipsList.Add("CCRecipient3");
    
    Recipients oRecips = oMsg.Recipients;
    
    foreach (string t in sTORecipsList)
    {
        Recipient oTORecip = oRecips.Add(t);
        oTORecip.Type = (int) OlMailRecipientType.olTo;
        oTORecip.Resolve();
    }
    
    foreach (string t in sCCRecipsList)
    {
        Recipient oCCRecip = oRecips.Add(t);
        oCCRecip.Type = (int) OlMailRecipientType.olCC;
        oCCRecip.Resolve();
    }
    
    oMsg.HTMLBody = "Test Body";
    oMsg.Subject = "Test Subject";
    oMsg.Send();