2012-06-27 36 views
5

Tôi đang sử dụng Interop để gửi e-mail qua Outlook, nhưng tôi không thể chỉ định địa chỉ e-mail Từ.Cách gửi thư bằng Microsoft.Office.Interop.Outlook.MailItem bằng cách chỉ định Địa chỉ Từ

Tôi muốn gửi thư cho nhiều người dùng có nguồn gốc từ cùng một người gửi (từ). Tôi cần phải đề cập đến từ địa chỉ e-mail. Tuy nhiên tôi không thể tìm thấy một tài sản sử dụng Intellisense cho phép tôi xác định nó.

Vui lòng trợ giúp.

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

Trả lời

5

Phương thức Send gửi thư bằng tài khoản mặc định. Để chỉ định tài khoản khác để gửi thư, hãy đặt thuộc tính SendUsingAccount thành mong muốn Account trước khi gọi phương thức Gửi.

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

Thông tin thêm có thể được tìm thấy ở đây:

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

+0

Làm cách nào để tạo thư và mở thư? (giống như mailto?). Lưu thư sẽ không gửi thư, nhưng chúng ta có thể có một cửa sổ với thư mới tạo không? –

+2

@Zaphod: sử dụng 'mail.Display (false)' để hiển thị email dưới dạng cửa sổ không theo phương thức. –

+0

@ RomanD.Boiko: cảm ơn nhận xét của bạn, đó là những gì tôi đang tìm kiếm. –

12

Bạn đang sử dụng outlook để gửi qua đường bưu điện. Do triển vọng phải được định cấu hình để sử dụng địa chỉ from thư của bạn, bạn không thể trực tiếp cung cấp địa chỉ from. Tuy nhiên, bạn có thể chọn một tài khoản có sẵn trên triển vọng. Ví dụ:

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

Cảm ơn bạn đã bao gồm phần sử dụng của phần này. Đã cho tôi mãi mãi để tìm thấy điều đó. Tôi không chắc các nhà phát triển thường biết những thứ 'sử dụng' mà họ cần đưa vào là gì? – Eric

+0

@Eric Bạn có thể mã hóa việc sử dụng {} khối cho bất kỳ lớp nào triển khai IDisposable. Khi khối sử dụng kết thúc, biến được xác định trong nó sẽ tự động được xử lý. – j2associates

Các vấn đề liên quan