2009-09-01 28 views
6

Tengo una aplicación ASP.NET alojada en GoDaddy de la que deseo enviar correos electrónicos. Cuando se ejecuta, obtengo: Nombre del buzón no permitido. La respuesta del servidor fue: lo siento, retransmitir denegado desde su ubicación. Las partes importantes del código y Web.config están a continuación:No se puede enviar correo electrónico en ASP.NET a través de servidores 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> 

Respuesta

17

1- Si su sitio está alojado en godaddy, puede usar "relay-hosting.secureserver.net" sin credenciales.

2- Si su sitio está alojado fuera de GoDaddy se puede utilizar "smtpout.secureserver.net" con usted por correo electrónico credenciales de la cuenta.

PD: Por favor, cambiar el puerto 3535 si tiene problemas con 25

alojado en GoDaddy

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

externa

<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

Estaba teniendo problemas al usar 'relay-hosting.secureserver.net' como' smtpClient.Host'. A veces llevó mucho tiempo enviar y otros lanzaron una excepción: "Nombre de buzón no permitido. La respuesta del servidor fue: perdón, retransmisión denegada desde su ubicación". Cambiar mi host a 'smptout.secureserver.net' resolvió este problema y permite que el correo se envíe en segundos. Muchas gracias: D +1 –

+0

godaddy hizo algunos cambios con su infraestructura de correo electrónico. Puede crear su cuenta de correo electrónico en diferentes centros de datos. para que pueda elegir los servidores America, Europe o Asia. Por ese motivo, debe usar un servidor smtp para su región. como "smtpout.europe.secureserver.net" –

+0

Mi problema era el puerto 25. Muchas gracias por sugerir el puerto 3535. ¡Funcionó como un encanto! – curiousBoy

0

Esta es probablemente una respuesta del servidor SMTP porque la máquina de intentar enviar correo electrónico no ha sido la lista blanca (o una lista negra de CORREO NO DESEADO). ¿Relay-hosting.secureserver.net es un servidor GoDaddy o está en una red diferente? Es posible que desee encontrar un servidor GoDaddy que permita retransmitir el correo electrónico. Me imagino que muchos proveedores de hospedaje compartido tienen restricciones hoy.

Me gustaría averiguar qué tipo de servidor SMTP está utilizando y qué medidas antispam existen. El administrador puede agregar el servidor GoDaddy a la lista blanca de los hosts permitidos. Debe tener mucho cuidado y asegurarse de que su aplicación no pueda ser utilizada como un proxy para un spammer. Asegúrese de validar todas las entradas para garantizar que sea seguro.

+0

relay-hosting.secureserver.net es el servidor de retransmisión smtp de GoDaddy. – Jared

0

Compruebe su nombre de host. ¿Está seguro de que su cuenta no está configurado para usar mail.greektools.net? Ese es el formato por defecto para GoDaddy de alojamiento web ..

+0

Intenté cambiarlo a mail.greektools.net y recibí una excepción genérica de "error de envío" (o algo así). – Jared

0

conjunto

defaultCredentials="false" 

en su elemento de red

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

Justo para una prueba. Elimine los valores de nombre de usuario y contraseña del web.config.

Luego, en su conjunto de códigos

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

He pedido GoDaddy, cómo configurar una forma SMTP gestor de correo, y me dijeron que me había necesidad de utilizar un servidor de retransmisión, sin nombre de usuario, sin contraseña y sin puerto El nombre del servidor a usar era el mismo nombre que usaste.

2

Aquí es mi clase de correo electrónico:

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

Y aquí están los ajustes relacionados 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> 

Para mí, la clave era "message.From = Desde" y "mensaje. ReplyTo = from ". GoDaddy parece querer que el mensaje provenga de una dirección en tu dominio. Así que para las páginas de contacto, utilice su dirección de correo electrónico predeterminado como el Desde y establecer el remitente como el ReplyTo. El correo electrónico pasa bien después de eso.

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

Para aquellos que quieren saber lo que debería ser El código C# además de la respuesta aceptada, el código siguiente funcionó para mí. Tenga en cuenta que la dirección "desde" ya se menciona en web.config en la respuesta aceptada, por lo que no es necesario mencionarla en el código 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); 
    } 
Cuestiones relacionadas