net mvc mail enviar asp c# .net asp.net-mvc email asp.net-mvc-5

c# - mvc - hangfire send email



"El host SMTP no fue especificado." ¿Pero está especificado? (3)

Estoy un poco desconcertado aquí. Recibo el siguiente error:

El host SMTP no fue especificado.

Aunque mi código parece ser correcto (por lo que puedo ver).

Puedo hacerlo manualmente incluyendo todos los detalles dentro del controlador, por ej.

SmtpClient smtpClient = new SmtpClient("smtp.gmail.com"); smtpClient.Port = 587; ... etc

Pero no debería tener que hacer esto, ya que quiero usar los detalles dentro de mailSettings (lo que hace que sea reutilizable para varios controladores diferentes).

mailSettings en mi archivo Web.Config :

<system.net> <mailSettings> <smtp from="[email protected]" deliveryMethod="Network" > <network host="smtp.gmail.com" defaultCredentials="true" port="587" enableSsl="true" userName="[email protected]" password="example"/> </smtp> </mailSettings> </system.net>

Mi acción de controlador:

[HttpPost] public ActionResult SubmitFeature(FormData formData) { SmtpClient smtpClient = new SmtpClient(); MailMessage mail = new MailMessage(); mail.To.Add(new MailAddress("[email protected]")); mail.Body = "Test"; smtpClient.Send(mail); return View("Example"); }

¿Hay algo que me falta que pueda estar causando esto? No me he equivocado con ninguna otra configuración en Web.Config, están tal como están al configurar un nuevo proyecto MVC5.



En un proyecto limpio de MVC, no puedo replicar tu problema. Siguiendo la publicación del blog ScottGu aquí , pude obtener un correo electrónico enviado a Gmail sin problemas (VS 2013, .NET 4.5.1, MVC 5). Tenga en cuenta que el elemento <system.net> es un elemento de nivel superior y no está anidado dentro de AppSettings o <system.web> .

Importante

Hay algunos archivos web.config en su solución, asegúrese de que mailSettings se inserte en el nivel raíz web.config (y no en el que se encuentra en la carpeta Vistas).

Web.Config

<configuration> <system.net> <mailSettings> <smtp from="[email protected]"> <network host="smtp.gmail.com" port="587" enableSsl="true" userName="[email protected]" password="SuperSecretPwd" defaultCredentials="false" /> <!--This must be false on Gmail--> </smtp> </mailSettings> </system.net> </configuration>

Controlador

var smtpClient = new SmtpClient(); var msg = new MailMessage(); msg.To.Add("[email protected]"); msg.Subject = "Test"; msg.Body = "This is just a test email"; smtpClient.Send(msg);

No está claro si algunos de los atributos adicionales que ha incluido están causando problemas (que no deberían), como el método de entrega. Además, ¿existe una configuración para permitir el acceso SMTP o solo para la entrega de IMAP / POP?

Si puede probar y tiene éxito en un proyecto limpio, esto apuntaría a un problema de transformación de web.config o a alguna otra configuración de su proyecto anulando las configuraciones de web.config que tiene implementadas.


No bromeo, pero obtuve este error porque el sujeto tenía [square brackets] en él. Y el código era tan simple como esto:

string subject = "[Mail for Admin]: Hello Admins"; using (var mailMessage = new MailMessage(sender, recipient) { Subject = subject, Body = body, IsBodyHtml = isHtml }) { EmailClient.Send(mailMessage); }