En ASP, puede enviar correos electrónicos simples llamando al componente CDONTS. En ASP.Net, también es posible. La diferencia es que en .Net Framework, este componente está encapsulado en el espacio de nombres System.Web.Mail.
Un programa típico de envío de correo electrónico es el siguiente:
<%@ Importar espacio de nombres="System.Web.Mail" %>
<script runat="servidor">
Mensaje de correo correo=nuevo mensaje de correo();
correo.From=" [email protected] ";
correo.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="un correo smtp de prueba.";
mail.Subject="¿estás bien?";
SmtpMail.SmtpServer="localhost";
SmtpMail.Enviar(correo);
</script>
Normalmente, el sistema llama al servidor virtual SMTP predeterminado que viene con IIS para enviar correos electrónicos. Sin embargo, a menudo nos encontramos con este mensaje de error:
El servidor rechazó una o más direcciones de destinatarios. La respuesta del servidor fue: 550 5.7.1 No se puede transmitir para [email protected]
La razón de este error no es solo la posibilidad de una dirección incorrecta. Hay otra razón importante. Como se mencionó anteriormente, IIS no tiene una función de correo electrónico real, sino que solo utiliza un "servidor virtual SMTP" para reenviar correos electrónicos. En MSDN, existe el siguiente consejo:
si su servidor SMTP local (incluido en Windows 2000 y Windows Server 2003) está detrás de un firewall que bloquea cualquier tráfico SMTP directo (a través del puerto 25), necesita averiguar si hay algún hosts disponibles en la red Se puede utilizar para transmitir mensajes SMTP destinados a Internet.
Un host inteligente es un servidor SMTP que retransmite el correo electrónico saliente enviado directamente a Internet desde un servidor SMTP interno. El host inteligente debería poder conectarse tanto a la red interna como a Internet para servir como puerta de enlace de correo electrónico.
Abra el servidor virtual SMTP predeterminado-Propiedades-Acceso-Restricciones de retransmisión. Puede ver que esta función de reenvío o retransmisión está restringida. En la lista de restricciones, agregue la dirección IP del host que necesita usar este servidor para resolver el problema mencionado anteriormente.
Si no utiliza el servidor virtual SMTP que viene con IIS pero utiliza otros servidores de correo reales, como IMail, Exchange, etc., a menudo encontrará el problema de que el servidor requiere autenticación del remitente (ESMTP). Cuando se utiliza un servidor que requiere verificación de la identidad del remitente, se producirá un error:
El servidor rechazó una o más direcciones de destinatarios. La respuesta del servidor fue: 550 no es un host local ckocoo.com, no es una puerta de enlace.
En el pasado, encontré esto en. ASP No hay posibilidad de resolver el problema. Solo podemos usar el componente CDO (el componente principal de CDONTS) directamente:
conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
conf.Fields[CdoConfiguration.cdoSendUserName].Value="brookes";
conf.Fields[CdoConfiguration.cdoSendPassword].Value="XXXXXXX";
En .Net Framework 1.1, obviamente se ha considerado este requisito. La colección Fields se ha agregado al componente MailMessage para aumentar fácilmente la identidad del remitente en el servidor de correo ESMTP. Problemas de verificación. Sin embargo, este método solo se aplica a .Net Framework 1.1, no a la versión .Net Framework 1.0. El procedimiento para enviar correos electrónicos con autenticación de remitente es el siguiente:
<%@ Importar espacio de nombres="System.Web.Mail" %>
<script runat="servidor">
Mensaje de correo correo=nuevo mensaje de correo();
correo.From=" [email protected] ";
correo.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="un correo smtp de prueba.";
mail.Subject="¿estás bien?";
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1"); //autenticación básica
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendusername ", "brookes"); //establezca su nombre de usuario aquí
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendpassword ", "walkor"); //establezca su contraseña aquí
SmtpMail.SmtpServer="lsg.moon.net";
SmtpMail.Enviar(correo);
</script>
Con este método, ya no necesitará depender de componentes de terceros como Jmail y EasyMail, ¡simplemente use SmtpMai para completar el envío de correos electrónicos!