2013-05-22 20 views
10

Oki, więc pracuję nad szablonami outlook .msg. Otwieranie ich programowo, wstawianie wartości bazuje na tym, co jest w mojej db.Jak dodać wielu odbiorców do pola mailitem.cc C#

np. gdy chcę dodać wiele reciepients w polu „Do”, zamiast robić jako następne,

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

zrobić co jest poniżej, która jest prostsza, zwłaszcza, gdy robię to w pętli.

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

Mój problem polega na tym, chcę również dodać wielu odbiorców w polu "CC", a powyższa funkcja działa tylko w polu "Do". Jak mogę dodać wielu odbiorców do pola "CC" bez konieczności manipulowania ciągami.

normalnie chciałbym dodać odbiorców do CC jak tak,

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

im przy interop.outlook i tworzenia MailItem z szablonu.

Z góry dziękuję.

Odpowiedz

11

Załóżmy, że jeśli masz dwóch odbiorców o adresie List, możesz to zrobić.

Edytuj: Zawiera pełny kod.

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(); 
+0

nie można go uruchomić, czy na pewno powinien współpracować z programem Outlook 2007/Office 2007? – Mana

+0

@Mana: Na czym polegał problem? –

+0

czy możesz wyjaśnić tę linię? Recipient oCCRecip = oRecips.Add (p_sUserID); gdzie lub co p_sUserID robi w .add()? – Mana

3

Użyj właściwości Odbiorcy jako udokumentowaną here (poszukaj drugiego przykładu). możesz dodać wiele osób do kolekcji, a następnie zmienić typ miejsca docelowego z to na CC.

+0

że przykładem jest dla VBA, programowanie im w C#, a nawet gdybym miał programowanie w VBA The CreateItem nie będzie działać, ponieważ im przy Office2007 – Mana

+0

Myślałam, że miał ten sam API. Ale wiesz co, podoba mi się odpowiedź Ramesza lepiej niż moja. – Renan

+1

CreateItem działa po prostu we wszystkich wersjach Outlooka. –