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.
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 –
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" –
Mi problema era el puerto 25. Muchas gracias por sugerir el puerto 3535. ¡Funcionó como un encanto! – curiousBoy