2009-09-01 11 views
6

Ich habe eine ASP.NET-Anwendung auf GoDaddy gehostet, von der ich E-Mails senden möchte. Wenn es läuft, bekomme ich: Mailbox-Name nicht erlaubt. Die Antwort des Servers war: Entschuldigung, Weiterleitung verweigert von Ihrem Standort. Die wichtige Teile des Codes und Web.config sind unter:Senden von E-Mails in ASP.NET über Godaddy-Server nicht möglich

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> 

Antwort

17

1- Wenn Ihre Website auf godaddy gehostet wird, können Sie "relay-hosting.secureserver.net" ohne Anmeldeinformationen verwenden.

2- Wenn Ihre Site außerhalb von godaddy gehostet wird, können Sie "smtpout.secureserver.net" mit Ihren E-Mail-Zugangsdaten verwenden.

PS: Bitte Port 3535 ändern, wenn Sie Probleme haben, mit 25

Hosted auf GoDaddy

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

Externe

<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

Ich hatte Probleme bei der Verwendung von 'relay-hosting.secureserver.net' als' smtpClient.Host'. Manchmal hat es lange gedauert, um zu senden, und andere, die es senden würde, eine Ausnahme auslösend: "Postfachname nicht erlaubt. Die Antwort des Servers war: Entschuldigung, das Weiterleiten, das von Ihrem Standort verweigert wurde". Durch die Änderung meines Hosts auf 'smptout.secureserver.net' wurde dieses Problem behoben und die E-Mail kann innerhalb von Sekunden gesendet werden. Vielen Dank: D +1 –

+0

godaddy hat einige Änderungen an der E-Mail-Infrastruktur vorgenommen. Sie können Ihr E-Mail-Konto in verschiedenen Rechenzentren erstellen. So können Sie Amerika, Europa oder Asien Server wählen. Aus diesem Grund müssen Sie einen SMTP-Server für Ihre Region verwenden. wie "smtpout.europe.secureserver.net" –

+0

Mein Problem war Port 25. Vielen Dank für den Vorschlag Port 3535. Arbeitete wie ein Charme! – curiousBoy

0

Dies ist wahrscheinlich eine Antwort vom SMTP-Server, da die Maschine versucht, E-Mail zu senden hat die weiße Liste nicht (oder auf die schwarze Liste für SPAM). Ist relay-hosting.secureserver.net ein GoDaddy-Server oder befindet er sich in einem anderen Netzwerk? Vielleicht möchten Sie einen GoDaddy-Server finden, der die Weitergabe von E-Mails ermöglicht. Ich könnte mir vorstellen, dass viele Shared-Hosting-Anbieter heute Einschränkungen haben.

Ich würde herausfinden, welche Art von SMTP-Server Sie verwenden und welche Anti-Spam-Maßnahmen vorhanden sind. Der Administrator kann möglicherweise den GoDaddy-Server zur Whitelist zulässiger Hosts hinzufügen. Sie müssen sehr vorsichtig sein und sicherstellen, dass Ihre Anwendung nicht als Proxy für einen Spammer verwendet werden kann. Stellen Sie sicher, dass alle Eingaben überprüft werden, um sicherzustellen, dass sie sicher sind.

+0

relay-hosting.secureserver.net ist der smtp relay server von GoDaddy. – Jared

0

Überprüfen Sie Ihren Hostnamen. Sind Sie sicher, dass Ihr Konto nicht konfiguriert mail.greektools.net zu benutzen? Das ist das Standardformat für GoDaddy Webhosting ..

+0

Ich habe versucht, es zu mail.greektools.net zu ändern, und ich habe eine generische "Fehler beim Senden" Ausnahme (oder so ähnlich). – Jared

0

gesetzt
defaultCredentials="false" 

in Ihrem Netzwerk Element

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

Nur für einen Test. Entfernen Sie den Benutzernamen und das Passwort aus der Datei web.config.

Dann setzen in Ihrem Code

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

ich GoDaddy nur gefragt, wie ein SMTP Formailer einzurichten, und sie sagten mir, dass ich einen Relay Server verwenden müssen würde, ohne Benutzername, kein Passwort und kein Port. Der zu verwendende Servername ist derselbe Name, den Sie verwendet haben.

2

Hier ist meine E-Mail-Klasse:

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; 
     } 
    } 
} 

Und hier sind die entsprechenden web.config Einstellungen:

<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> 

Für mich war der Schlüssel "message.From = Von" und „Nachricht. ReplyTo = von ". GoDaddy scheint zu wollen, dass die Nachricht von einer Adresse in Ihrer Domain kommt. Verwenden Sie daher für Kontaktseiten Ihre Standard-E-Mail-Adresse als Absender und legen Sie den Absender als ReplyTo fest. E-Mail geht danach gut durch.

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

Für diejenigen, die wissen wollen, was sein sollte C# Code zusätzlich zu der angenommenen Antwort, unter Code arbeitete für mich. Bitte beachten Sie, dass die "Von" -Adresse bereits in web.config in der akzeptierten Antwort erwähnt wird, sodass Sie sie nicht im C# -Code erwähnen müssen.

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