2009-09-01 80 views
6

我有一個託管在Godaddy上的ASP.NET應用程序,我想從中發送電子郵件。運行時,我得到:郵箱名稱不允許。服務器的迴應是:抱歉,中繼拒絕你的位置。代碼和Web.config中的重要部分是以下:無法通過Godaddy服務器在ASP.NET中發送電子郵件

msg = new MailMessage("[email protected]", email); 
     msg.Subject = "GreekTools Registration"; 
     msg.Body = 
      "You have been invited by your organization to register for the GreekTools recruitment application.<br/><br/>" + 
      url + "<br/><br/>" + 
      "Sincerely,<br/>" + 
      "The GreekTools Team"; 

     msg.IsBodyHtml = true; 

     client = new SmtpClient(); 
     client.Host = "relay-hosting.secureserver.net"; 

     client.Send(msg); 

<system.net> 
<mailSettings> 
    <smtp from="[email protected]"> 
    <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" /> 
    </smtp> 
</mailSettings> 

回答

17

1-如果您的網站託管在godaddy上,則可以使用「relay-hosting.secureserver.net」而無需憑據。

2-如果您的網站託管在godaddy以外,您可以使用「smtpout.secureserver.net」與您的電子郵件帳戶憑據。

PS:請更改端口3535,如果您有問題25

託管在GoDaddy的

<system.net> 
     <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="relay-hosting.secureserver.net"/> 
     </smtp> 
     </mailSettings> 
    </system.net> 

外部

<system.net> 
    <mailSettings> 
     <smtp from="[email protected]"> 
     <network host="smtpout.secureserver.net" 
      userName="[email protected]" password="your_password_here" 
      port="25" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 
+0

我在使用'relay-hosting.secureserver.net'作爲'smtpClient.Host'時遇到了問題。有時需要很長時間才能發送,而其他人則會發送異常:「郵箱名稱不允許,服務器響應是:對不起,中繼拒絕您的位置」。將我的主機更改爲'smptout.secureserver.net'解決了此問題,並允許在幾秒鐘內發送郵件。非常感謝:D +1 – 2013-01-03 21:53:57

+0

godaddy對其電子郵件基礎架構進行了一些更改。您可以在不同的數據中心創建您的電子郵件帳戶。所以你可以選擇美國,歐洲或亞洲的服務器。出於這個原因,你需要爲你的地區使用一個smtp服務器。像「smtpout.europe.secureserver.net」 – 2013-06-19 12:49:45

+0

我的問題是港口25.非常感謝建議端口3535.工作就像一個魅力! – curiousBoy 2016-08-01 16:18:47

0

這可能是來自SMTP服務器的回覆,因爲機器試圖發送電子郵件沒有被列入白名單(或列入黑名單垃圾郵件)。 relay-hosting.secureserver.net是GoDaddy服務器,還是位於不同的網絡上?您可能希望找到一個可以中繼電子郵件的GoDaddy服務器。我會想象今天很多共享主機提供商都有限制。

我會找出你使用的是什麼類型的SMTP服務器,以及反垃圾郵件措施是否到位。管理員可以將GoDaddy服務器添加到允許的主機的白名單中。您需要非常小心,並確保您的應用程序不能用作垃圾郵件發送者的代理。確保驗證所有輸入以確保其安全。

+0

relay-hosting.secureserver.net是GoDaddy的smtp中繼服務器。 – Jared 2009-09-01 02:22:29

0

檢查您的主機名。你確定你的帳戶未配置爲使用mail.greektools.net?這對GoDaddy的虛擬主機的默認格式..

+0

我確實嘗試將其更改爲mail.greektools.net,並且我得到了一個通用的「發送失敗」異常(或類似的東西)。 – Jared 2009-09-01 04:25:56

0

設置

defaultCredentials="false" 

在您的網絡元素

 <network host="relay-hosting.secureserver.net" port="25" userName="********" password="*********" defaultCredentials="false" /> 
0

剛進行測試。從web.config中刪除用戶名和密碼值。

然後,在你的代碼中設置

//call this line, before you call .Send 
client.Credentials = CredentialCache.DefaultNetworkCredentials; 
client.Send(msg) 
0

我剛纔問GoDaddy的,如何建立一個SMTP郵件的形式,他們告訴我,我需要使用一箇中繼服務器,一個沒有用戶名,沒有密碼,也沒有端口。要使用的服務器名稱與您使用的名稱相同。

2

這裏是我的電子郵件類:

public class Email 
{ 
    public enum MailAddressType 
    { 
     From = 1, 
     Bcc 
    } 

    private static MailAddress _from = null; 

    public static void SendEmail(string to, string subject, string body) 
    { 
     SendEmail(to, subject, body, From, string.Empty); 
    } 

    public static void SendEmail(string to, string subject, string body, string from) 
    { 
     SendEmail(to, subject, body, from, MailAddressType.From); 
    } 

    public static void SendEmail(string to, string subject, string body, string addresses, MailAddressType addressType) 
    { 
     MailAddress from = From; 
     string bcc = string.Empty; 

     if (MailAddressType.From == addressType) 
     { 
      from = new MailAddress(addresses); 
     } 
     else 
     { 
      bcc = addresses; 
     } 

     SendEmail(to, subject, body, from, bcc); 
    } 

    private static void SendEmail(string to, string subject, string body, MailAddress from, string bcc) 
    { 
     MailMessage message = new MailMessage(); 
     message.From = From; 
     message.To.Add(to); 
     if (!string.IsNullOrEmpty(bcc)) 
     { 
      message.Bcc.Add(bcc); 
     } 
     message.ReplyTo = from; 
     message.Subject = subject; 
     message.Body = HttpContext.Current.Server.HtmlEncode(body); 
     SmtpClient smtp = new SmtpClient(); 
     smtp.Send(message); 
    } 

    public static MailAddress From 
    { 
     get 
     { 
      if (null == _from) 
      { 
       SmtpSection section = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp"); 
       string address = section.From; 
       string displayName = ConfigurationManager.AppSettings["fromEmailDisplayName"]; 
       _from = new MailAddress(address, displayName); 
      } 
      return _from; 
     } 
    } 
} 

這裏是相關的web.config設置:

<appSettings> 
    <add key="fromEmailDisplayName" value="Firstname Lastname"/> 
</appSettings> 

<system.net> 
    <mailSettings> 
     <smtp deliveryMethod="Network" from="[email protected]"> 
      <network host="relay-hosting.secureserver.net" /> 
     </smtp> 
    </mailSettings> 
</system.net> 

對我來說,關鍵是 「message.From =從」 和「消息。 ReplyTo = from「。 GoDaddy似乎希望郵件來自您域中的地址。因此,對於聯繫人頁面,使用您的默認電子郵件地址作爲發件人並將發件人設置爲回覆。之後,電子郵件通過罰款。

0
var message = new MailMessage(); 
message.To.Add(new MailAddress("email-address")); 
message.From = new MailAddress("email-address"); 
message.Subject = "subject"; 
message.Body = string.Format("message-body"); 
message.IsBodyHtml = true; 
using (var smtp = new SmtpClient()) 
{ 
    smtp.Host = "relay-hosting.secureserver.net"; 
    smtp.EnableSsl = false; 
    smtp.Credentials = CredentialCache.DefaultNetworkCredentials; 
    await smtp.SendMailAsync(message); 
} 
0

對於那些想知道誰應該是什麼C#代碼除了被接受的答案,下面的代碼爲我工作。請注意,「發件人」地址已經在接受的答案的web.config中提到,因此不需要在C#代碼中提及它。

public static void SendMail(string emailid, string subject, string body) 
    { 
     System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient(); 

     System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage(); 

     msg.To.Add(new MailAddress(emailid)); 

     msg.Subject = subject; 
     msg.IsBodyHtml = true; 
     msg.Body = body; 

     client.Send(msg); 
    } 
相關問題