2012-06-27 4 views
5

Używam Interop do wysyłania wiadomości e-mail za pośrednictwem programu Outlook, ale nie jestem w stanie określić adresu e-mail From.Jak wysłać wiadomość e-mail za pomocą Microsoft.Office.Interop.Outlook.MailItem, określając Adres Od

Chcę wysyłać wiadomości do wielu użytkowników pochodzących od tego samego nadawcy (od). Muszę wspomnieć o tym z adresu e-mail. Jednak nie mogę znaleźć właściwości za pomocą IntelliSense, która pozwala mi ją określić.

Proszę o pomoc.

Microsoft.Office.Interop.Outlook.Application olkApp1 = 
    new Microsoft.Office.Interop.Outlook.Application(); 
Microsoft.Office.Interop.Outlook.MailItem olkMail1 = 
    (MailItem)olkApp1.CreateItem(OlItemType.olMailItem); 
     olkMail1.To = txtpsnum.Text; 
     olkMail1.CC = ""; 
     olkMail1.Subject = "Assignment note"; 
     olkMail1.Body = "Assignment note"; 
     olkMail1.Attachments.Add(AssignNoteFilePath, 
      Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, 1, 
       "Assignment_note"); 
olkMail1.Save(); 
//olkMail.Send(); 

Odpowiedz

5

Metoda Send wysyła wiadomość e-mail przy użyciu konta domyślnego. Aby określić inne konto, aby wysłać wiadomość, ustaw właściwość SendUsingAccount na żądaną Account przed wywołaniem metody Wyślij.

var application = new Application(); 
var mail = (_MailItem) application.CreateItem(OlItemType.olMailItem); 
mail.To = "[email protected]"; 
.... 
Outlook.Account account = Application.Session.Accounts["MyOtherAccount"]; 
mailItem.SendUsingAccount = account; 
mail.Send(); 

Więcej informacji można znaleźć tutaj:

http://msdn.microsoft.com/en-us/library/ff184652.aspx

+0

Jak mogę utworzyć moją pocztę i otworzyć ją? (jak mailto?). Zapisz umieść pocztę w nie wysyłanej poczcie, ale czy możemy mieć okno z nową pocztą? –

+2

@Zaphod: użyj 'mail.Display (false)', aby wyświetlić wiadomość e-mail jako okno niemodalne. –

+0

@ RomanD.Boiko: dzięki za komentarz, tego właśnie szukałem. –

12

używasz programu Outlook do wysyłania poczty. Ponieważ program Outlook musi być skonfigurowany do używania adresu from Twojej poczty, nie możesz bezpośrednio podać adresu from. Możesz jednak wybrać konto dostępne w programie Outlook. Na przykład:

using Outlook = Microsoft.Office.Interop.Outlook; 

Outlook.Accounts accounts = olkApp1.Session.Accounts; 
foreach (Outlook.Account account in accounts) 
{ 
    // When the e-mail address matches, send the mail. 
    if (account.SmtpAddress == "[email protected]") 
    { 
      olkMail1.SendUsingAccount = account; 
      ((Outlook._MailItem)olkMail1).Send(); 
      break; 
    } 
} 
+1

Dziękuję za uwzględnienie wykorzystania tego. Wziął mnie na zawsze, aby to znaleźć. Nie wiem, jak programiści zwykle wiedzą, co "używać" rzeczy, które muszą zawierać? – Eric

+0

@Eric Możesz zakodować użycie bloku {} dla każdej klasy, która implementuje IDisposable. Po zakończeniu używania bloku zdefiniowana w nim zmienna jest automatycznie usuwana. – j2associates

Powiązane problemy