2012-09-15 106 views
2

使用以下設置,我無法從本地PC發送郵件。在搜索堆棧溢出許多響應 -使用Godaddy SMTP從Windows Azure服務發送郵件

  1. 我試着將主機從smtpout.secureserver.net交換到relay-hosting.secureserver.net。哪些沒有幫助。 (可能因爲在godaddy服務器上託管時必須使用relay-hosting)我的主機是windows azure服務。
  2. 我在SO上讀到defaultCredentials & enableSSL是互斥的 排他性的。請建議。
  3. 端口25可以通過幾種ISP被阻塞,所以作爲替代端口80 可以用於使用http發送郵件。
  4. System.net.Mail不支持https的godaddy的465端口。

已經嘗試了所有這些可能性,我最終要麼兩個錯誤 -

  1. 發送郵件失敗 - 無法與遠程服務器連接。
  2. SMTP服務器需要安全連接或客戶端不是 進行身份驗證。

問題1. 請確切地說,我需要從Windows Azure服務中使用godaddy smtp服務器需要哪些配置?

從本地主機我試圖使自簽名的證書,由斯科特,這裏建議..

http://weblogs.asp.net/scottgu/archive/2007/04/06/tip-trick-enabling-ssl-on-iis7-using-self-signed-certificates.aspx

問題2:在web.config中從 地址指定,似乎是多餘的,因爲在MailMessage中,我們必須再次輸入地址 。它的目的是什麼?

什麼最簡單的方法來配置Azure中配置IIS使用第三方SMTP服務器使用蔚藍服務

private void SendMail(MailMessage msg) 
    { 
     try 
     { 
      var smtp = new SmtpClient(); 
      smtp.Send(msg); 
     } 
     catch (SmtpFailedRecipientException exFailed) 
     { 
      lblExSendMail.Text = exFailed.Message; 
     } 
    } 

<system.net> 
<mailSettings> 
    <smtp deliveryMethod="Network" from="[email protected]"> 
    <network host="smtpout.secureserver.net" port="80" userName="[email protected]" password="xyz-password" /> 
    </smtp> 
</mailSettings> 

回答

2
  1. 答案1.端口80,而不是使用25爲我發送郵件 使用http通道。這適用於本地和Windows Azure。除了主機,port = 80,用戶名和密碼 - > http以外,防止自己在網絡元素smtp中指定任何其他內容。

  2. Ans 2.從web.config中的smtp元素的屬性被 MailMessage的無參數構造函數使用。當您要通過普通電子郵件地址發送郵件時,這尤其有用 。

1

從Windows Azure應用程序發送電子郵件在任何一方,Windows Azure或第三方SMTP服務器上都不需要任何特殊配置。大多數SMTP服務器都設置爲使用端口25,這是從Windows Azure發送電子郵件的最簡單方式,GoDaddy SMTP服務器也設置爲使用端口25,因此您可以輕鬆完成。任何一方都不需要SSL/certifcate配置。

下面的代碼片段是您可以使用在C#應用程序或Windows Azure中直接無需任何配置eith GoDaddy的SMTP服務的最簡單的代碼:

SmtpClient MySMTPClient; 
MailMessage myEmail; 
MySMTPClient = new SmtpClient("smtp.secureserver.net", 25); 
MySMTPClient.Credentials = new NetworkCredential("<MailID>", "<Password>"); 
myEmail = new MailMessage(new MailAddress("<sender>"), new MailAddress("<receiver>")); 
myEmail.Body = "Email from Windows Azure Application"; 
myEmail.Subject = "Email from Windows Azure"; 
try 
{ 
    MySMTPClient.Send(myEmail); 
} 
catch (Exception ex) 
{ 
    // Display Exception Details 
} 
0

這是如此的簡單:

你必須集中SMTP主機,端口,SSL ... 更改SMTP主機上:relay-hosting.secureserver.netDELETE端口SSL,多數民衆贊成... 不使用SMTP端口和SMTP SSL真或假

var fromAddress = "[email protected]"; 
    // any address where the email will be sending 
    var toAddress = "[email protected]"; 
    //Password of your mail address 
    const string fromPassword = "******"; 
    // Passing the values and make a email formate to display 
    string subject = TextBox1.Text.ToString(); 
    string body = "From: " + TextBox2.Text + "\n"; 
    body += "Email: " + TextBox3.Text + "\n"; 
    body += "Subject: " + TextBox4.Text + "\n"; 
    body += "Message: \n" + TextBox5.Text + "\n"; 
    // smtp settings 
    var smtp = new System.Net.Mail.SmtpClient(); 
    { 
     smtp.Host = "relay-hosting.secureserver.net"; 
**//Warning Delete =>//smtp.Port = 80;** 
**//Warning Delete =>//smtp.EnableSsl = false;** 
     smtp.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; 
     smtp.Credentials = new NetworkCredential(fromAddress, fromPassword); 
     smtp.Timeout = 20000; 
    } 
    // Passing values to smtp object 
    smtp.Send(fromAddress, toAddress, subject, body); 

這對目標框架4.0上的Godaddy Windows主機起作用

相關問題