No ASP, você pode enviar e-mails simples chamando o componente CDONTS. No ASP.Net, também é possível. A diferença é que no .Net Framework esse componente é encapsulado no namespace System.Web.Mail.
Um programa típico de envio de e-mail é o seguinte:
<%@ Importar Namespace="System.Web.Mail" %>
<script runat="servidor">
MailMessage mail=new MailMessage();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="um e-mail smtp de teste.";
mail.Subject="está bem?";
SmtpMail.SmtpServer="localhost";
SmtpMail.Send(correio);
</script>
Normalmente, o sistema chama o servidor virtual SMTP padrão que acompanha o IIS para enviar e-mails. No entanto, frequentemente encontramos esta mensagem de erro:
O servidor rejeitou um ou mais endereços de destinatários A resposta do servidor foi: 550 5.7.1 Não é possível retransmitir para [email protected]
A razão para este erro não é apenas a possibilidade de endereço errado, Há outra razão importante. Conforme mencionado acima, o IIS não possui uma função de e-mail real, mas apenas usa um “servidor virtual SMTP” para encaminhar e-mails. No MSDN, existe a seguinte dica:
Se o seu servidor SMTP local (incluído no Windows 2000 e Windows Server 2003) estiver atrás de um firewall que bloqueie qualquer tráfego SMTP direto (via porta 25), você precisa descobrir se há algum tráfego inteligente. hosts disponíveis na rede Podem ser usados para retransmitir mensagens SMTP destinadas à Internet.
Um host inteligente é um servidor SMTP que retransmite emails de saída enviados diretamente para a Internet a partir de um servidor SMTP interno. O host inteligente deve ser capaz de se conectar à rede interna e à Internet para servir como gateway de e-mail.
Abra as restrições padrão do servidor virtual SMTP-Properties-Access-Relay. Você pode ver que esta função de encaminhamento ou retransmissão é restrita. Na lista de restrições, adicione o endereço IP do host que precisa utilizar este servidor para solucionar o problema mencionado acima.
Se você não usar o servidor virtual SMTP que vem com o IIS, mas usar outros servidores de e-mail reais, como IMail, Exchange, etc., você frequentemente encontrará o problema de que o servidor requer autenticação do remetente (ESMTP). Ao usar um servidor que requer verificação da identidade do remetente, ocorrerá um erro:
O servidor rejeitou um ou mais endereços de destinatários A resposta do servidor foi: 550 host não local ckocoo.com, não é um gateway
No passado, encontrei isso em. ASP Não há possibilidade de resolver o problema. Só podemos usar o componente CDO (o componente pai do CDONTS) diretamente:
conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
conf.Fields[CdoConfiguration.cdoSendUserName].Value="brookes";
conf.Fields[CdoConfiguration.cdoSendPassword].Value="XXXXXXX";
No .Net Framework 1.1, este requisito foi obviamente adicionado ao componente MailMessage para aumentar facilmente a identidade do remetente no servidor de correio ESMTP. Problemas de verificação. No entanto, este método se aplica apenas ao .Net Framework 1.1, não à versão .Net Framework 1.0. O procedimento para envio de e-mails com autenticação de remetente é o seguinte:
<%@ Importar Namespace="System.Web.Mail" %>
<script runat="servidor">
MailMessage mail=new MailMessage();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="um e-mail smtp de teste.";
mail.Subject="está bem?";
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/smtpauthenticate ", "1");
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendusername ", "brookes");
mail.Fields.Add(" http://schemas.microsoft.com/cdo/configuration/sendpassword ", "walkor");
SmtpMail.SmtpServer="lsg.moon.net";
SmtpMail.Send(correio);
</script>
Com este método, você não precisa mais depender de componentes de terceiros como Jmail e EasyMail, basta usar o SmtpMai para concluir o envio de e-mails!