2009-09-01 8 views
6

Mam aplikację ASP.NET hostowaną na serwerze GoDaddy, z której chcę wysyłać wiadomości e-mail. Po uruchomieniu otrzymuję: Nazwa skrzynki pocztowej jest niedozwolona. Odpowiedź serwera była: przepraszam, odmowa przekazania z Twojej lokalizacji. Ważnymi częściami kodu i Web.config są poniżej:Nie można wysyłać wiadomości e-mail w środowisku ASP.NET za pośrednictwem serwerów GoDaddy

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> 

Odpowiedz

17

1- Jeśli Twoja witryna jest hostowana na serwerze godaddy, możesz użyć "relay-hosting.secureserver.net" bez poświadczeń.

2- Jeśli Twoja witryna jest hostowana poza domeną Godaddy, możesz użyć "smtpout.secureserver.net" z danymi logowania na konto e-mail.

PS: Proszę zmienić port 3535, jeśli masz problemy z 25

utrzymywana na GoDaddy

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

Zewnętrznych

<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

Wystąpiły problemy podczas używania 'relay-host.secureserver.net' jako' smtpClient.Host'. Czasami wysyłanie wiadomości trwało długo, a inni wysyłali w ogóle wyjątek: "Nazwa skrzynki pocztowej jest niedozwolona. Odpowiedź serwera brzmiała: przepraszam, odmowa przekazania z Twojej lokalizacji". Zmiana mojego hosta na 'smptout.secureserver.net' rozwiązała ten problem i umożliwia wysłanie wiadomości w ciągu kilku sekund. Dziękuję bardzo: D +1 –

+0

Godaddy wprowadził pewne zmiany wraz z infrastrukturą poczty e-mail. Możesz utworzyć swoje konto e-mail w różnych centrach danych. więc możesz wybrać serwery Ameryki, Europy lub Azji. Z tego powodu musisz użyć serwera smtp dla swojego regionu. jak "smtpout.europe.secureserver.net" –

+0

Moim problemem był port 25. Wielkie dzięki za zasugerowanie portu 3535. Pracowałem jak czar! – curiousBoy

0

Jest to prawdopodobnie odpowiedź z serwera SMTP, ponieważ komputer próbuje wysłać wiadomość e-mail nie został białej liście (lub jest na czarnej liście za SPAM). Czy serwer relay-hosting.secureserver.net jest serwerem GoDaddy, czy jest on w innej sieci? Możesz znaleźć serwer GoDaddy, który umożliwia przekazywanie wiadomości e-mail. Mogę sobie wyobrazić, że wielu współdzielonych dostawców hostingu ma dziś ograniczenia.

Chciałbym dowiedzieć się, jakiego rodzaju serwera SMTP używasz i jakie środki antyspamowe są na miejscu. Administrator może dodać serwer GoDaddy do białej listy dozwolonych hostów. Musisz być bardzo ostrożny i upewnić się, że aplikacja nie może być używana jako proxy dla spamera. Upewnij się, że sprawdzasz wszystkie dane wejściowe, aby upewnić się, że są bezpieczne.

+0

relay-hosting.secureserver.net to serwer przekazywania smdp GoDaddy. – Jared

0

Sprawdź swoją nazwę hosta. Czy na pewno Twoje konto nie jest skonfigurowany do korzystania mail.greektools.net? To domyślny format dla GoDaddy Webhosting ..

+0

Próbowałem zmienić to na mail.greektools.net i otrzymałem ogólny wyjątek "brak wysłania" (lub coś w tym stylu). – Jared

0

ustawić

defaultCredentials="false" 

w elemencie sieciowym

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

Wystarczy na test. Usuń nazwę użytkownika i hasło z pliku web.config.

Następnie w kodzie ustawić

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

Poprosiłem tylko GoDaddy, jak skonfigurować program pocztowy SMTP formą, i powiedziano mi, że muszę użyć Server Relay, bez nazwy użytkownika, bez hasła i bez portu. Nazwa używanego serwera to ta sama nazwa, której użyłeś.

2

Oto moja klasa email:

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

A oto związanych ustawień 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> 

Dla mnie kluczem była "message.From = Z" i komunikatem”. ReplyTo = from ". GoDaddy wydaje się chcieć, aby wiadomość pochodziła z adresu w Twojej domenie. Tak więc dla stron kontaktowych użyj domyślnego adresu e-mail jako From i ustaw nadawcę jako ReplyTo. Po tym e-mail przechodzi do porządku.

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

Dla tych, którzy chcą wiedzieć, co powinno być Kod C# oprócz zaakceptowanej odpowiedzi, poniżej kod pracował dla mnie. Zwróć uwagę, że adres "od" jest już wymieniony w web.config w zaakceptowanej odpowiedzi, więc nie trzeba wspominać o tym w kodzie 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); 
    } 
Powiązane problemy