asp.net - net - Autenticación SMTP con ajustes de correo del archivo de configuración
enviar correo asp net (2)
La clase SmtpClient debe usar los parámetros de autenticación sin que tenga que leer explícitamente el nombre de usuario o la contraseña fuera de la configuración. Consulte http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx
¿Puedes publicar el segmento System.Net desde tu configuración? Además, ¿puede publicar el error exacto que está recibiendo del servidor SMTP?
Estoy almacenando mis ajustes de correo en un web.config, sin embargo, cuando envío el mensaje, mi servidor SMTP informa que necesito usar la autenticación. Tengo mi nombre de usuario / contraseña en el archivo de configuración, pero todavía falla.
Funciona si hago lo siguiente, pero parece un paso adicional. ¿No debería simplemente tomarlo del archivo de configuración y usar la autenticación automáticamente?
System.Configuration.Configuration config = WebConfigurationManager.OpenWebConfiguration(
HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings =
(MailSettingsSectionGroup) config.GetSectionGroup("system.net/mailSettings");
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential(
settings.Smtp.Network.UserName, settings.Smtp.Network.Password);
Web.config
<system.net>
<mailSettings>
<smtp from="[email protected]" deliveryMethod="Network">
<network host="mail.xyz.com" defaultCredentials="true"
userName="me@xyzcom" password="abc123" />
</smtp>
</mailSettings>
</system.net>
System.Net.Mail.SmtpException
Se superó la asignación de almacenamiento. La respuesta del servidor fue: Por favor use la autenticación smtp. Consulte http://www.myISP.com/support/smtp-authentication.aspx
La "Asignación de almacenamiento excedida" nos confundió durante bastante tiempo, ahora lo ignoramos. Es el "uso de la autenticación smtp" que parece ser importante.
La diferencia entre el enfoque codificado y el enfoque único de web.config es que este último tiene el conjunto defaultCredentials="true"
. Eso impide que el nombre de usuario y la contraseña se utilicen para autenticar, con ese enfoque. Creo que el problema se solucionaría configurándolo como "falso" (o eliminándolo por completo, porque "falso" es el valor predeterminado).