2013-03-03 177 views
1

我一直在漫遊論壇,沒有找到我的問題的任何答案。 所有的解決方案(和問題)都是關於使用Microsoft.Office.Interop.Outlook; 由於某種原因我不允許使用任何office.interop創建併發送Outlook電子郵件

我甚至嘗試:

MailAddress fromAddress = new MailAddress("[email protected]"); 
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); 
message.From = fromAddress; 
message.To.Add("[email protected]"); 
message.CC.Add("[email protected]"); 
message.Subject = "theSubject"; 
message.Body = "TheBody"; 

SmtpClient smtpClient = new SmtpClient("zzz.server.xxx"); 
smtpClient.Credentials = new NetworkCredential("[email protected]", "password"); 

smtpClient.Send(message); 

代碼無法驗證證書,即使我硬編碼密碼,但我覺得必須有一個更好的辦法。

+1

我發現這最終有幫助http://stackoverflow.com/questions/6489397/send-mail-using-my-outlook-account – 2013-03-03 04:37:11

+0

@AlinaB。不允許使用任何'office.interop' – 2013-03-03 04:38:38

+0

這是winforms,web,WPF還是什麼?顯然它不是VSTO,但你已經標記了Outlook,那麼你需要什麼類型的應用程序來發送電子郵件? – 2013-03-03 05:04:42

回答

2

有很多你想問的問題。你可以發佈服務器的響應或你收到的錯誤嗎?

這裏有一些意見和反饋,可以幫助您 指定端口

SmtpClient smtpClient = new SmtpClient("zzz.server.xxx", PORTNUMBER); 

設置一些基本屬性

smtpClient.Timeout = 10000; 
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; 
smtpClient.UseDefaultCredentials = false; //must be set prior to credentials 
smtpClient.Credentials = new NetworkCredential("username", "pass"); 

設置郵件編碼

message.SubjectEncoding = System.Text.Encoding.UTF8; 
message.BodyEncoding = System.Text.Encoding.UTF8; 

發送的異步並使用回調來確定結果

//add callback 
smtpClient.SendCompleted += new SendCompletedEventHandler(SendCompletedCallback); 

//set token 
string userToken = "tokenString"; 

//send asynchronously 
smtpCient.SendAsync(message, userToken); 

public static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e) 
     { 
      // Get the unique identifier for this asynchronous operation. 
      String token = (string) e.UserState; 

      if (e.Cancelled) 
      { 
       //do something if it was cancelled 
      } 
      if (e.Error != null) 
      { 
       MessageBox.Show(e.Error.ToString()); 
      } else 
      { 
       MessageBox.Show("Message sent."); 
      } 
     } 
+0

只需添加,您可能需要使用SmtpClient上的EnableSsl屬性啓用SSL。 [SmtpClient類](http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx) – 2013-03-03 05:21:37

0

您是否已通過在備用客戶端(如Outlook)中配置帳戶來驗證憑據,包括用戶名的格式?

您可能需要:

smtpClient.Credentials = new NetworkCredential("sender", "password"); 

smtpClient.Credentials = new NetworkCredential("DOMAIN\sender", "password"); 
0

是您的電子郵件服務器的Exchange Server?如果是這樣,則可以使用Exchange Web服務(EWS)發送電子郵件並將副本保存到「已發送郵件」文件夾中。一個簡單的例子可以看這裏:

Send Exchange Email

More Sample Code