2012-01-19 37 views
11

Tôi đang sử dụng API được quản lý EWS để gửi email. Tài khoản "tài khoản @ domain.com" có quyền "Gửi dưới dạng" để sử dụng "tên người gửi @ domain.com" hộp thư để gửi thư (từ Outlook, nó hoạt động tốt).API được quản lý EWS: cách đặt Từ email?

Nhưng tôi thử mã - nó không hoạt động, trong thư tôi được đọc trong trường "Từ" "tài khoản @ domain.com".

.... 
EmailMessage message = new EmailMessage(service); 
message.Body = txtMessage; 
message.Subject = txtSubject; 
message.From = txtFrom; 
.... 
message.SendAndSaveCopy(); 

Cách gửi thư thay mặt cho người dùng khác? :)

Trả lời

6

Đã lâu rồi tôi không thích điều tương tự, và tôi kết luận rằng điều đó là không thể, mặc dù có quyền "Gửi dưới dạng".

Mạo danh là con đường duy nhất để đi với EWS, xem MSDN:

ExchangeService service = new ExchangeService(); 
service.UseDefaultCredentials = true; 
service.AutodiscoverUrl("[email protected]"); 

// impersonate user e.g. by specifying an SMTP address: 
service.ImpersonatedUserId = new ImpersonatedUserId(
    ConnectingIdType.SmtpAddress, "[email protected]"); 

Nếu mạo danh không được kích hoạt, bạn sẽ phải cung cấp các thông tin của người dùng trên danh nghĩa của người mà bạn muốn hành động . Xem this MSDN article.

ExchangeService service = new ExchangeService(); 
service.Credentials = new NetworkCredential("user", "password", "domain"); 
service.AutodiscoverUrl("[email protected]"); 

Hoặc bạn có thể chỉ cần chỉ định reply-to address.

EmailMessage mail = new EmailMessage(service); 
mail.ReplyTo.Add("[email protected]"); 

Tuy nhiên, "Gởi như" quyền làm áp dụng khi gửi thư sử dụng System.Net.Mail, mà trong nhiều trường hợp sẽ làm tốt khi chỉ gửi e-mail. Có tons of examples minh họa how to do this.

// create new e-mail 
MailMessage mail = new MailMessage(); 
mail.From = new MailAddress("[email protected]"); 
mail.To.Add(new MailAdress("[email protected]")); 
message.Subject = "Subject of e-mail"; 
message.Body = "Content of e-mail"; 

// send through SMTP server as specified in the config file 
SmtpClient client = new SmtpClient(); 
client.Send(mail); 
+0

mail.ReplyTo sẽ không hoạt động, không có setter về vấn đề này. Email công cộngĐịa chỉThu hồi trả lờiĐể {get; } – RobDigital

+0

Phải, đó là một bộ sưu tập. Vì vậy, bạn sẽ cần phải làm 'mail.ReplyTo.Add (" [email protected] ")' - Tôi sẽ sửa ví dụ trên. – bernhof

+0

Sử dụng Mạo danh Tôi gặp lỗi trên mail.send. - Địa chỉ SMTP chính phải được chỉ định khi tham chiếu hộp thư – markthewizard1234

0

tôi nghĩ rằng bạn nên sử dụng Sender tài sản nên mã của bạn sẽ giống như thế:

EmailMessage message = new EmailMessage(service); 
message.Body = txtMessage; 
message.Subject = txtSubject; 
message.Sender= txtFrom; 
.... 
message.SendAndSaveCopy(); 
+0

Không điều này có vẻ không hoạt động. Tôi đã thử đặt người gửi, người gửi.name và người gửi.Địa chỉ và mặc dù họ được đặt, email vẫn đến từ tài khoản được chỉ định trong thiết lập dịch vụ của bạn. – RobDigital

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