ASP에서는 CDONTS 구성 요소를 호출하여 간단한 이메일을 보낼 수도 있습니다. 차이점은 .Net Framework에서는 이 구성 요소가 System.Web.Mail 네임스페이스로 캡슐화된다는 것입니다.
일반적인 이메일 전송 프로그램은 다음과 같습니다.
<%@ Import Namespace="System.Web.Mail" %>
<스크립트 runat="서버">
MailMessage mail=new MailMessage();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="테스트 smtp 메일입니다.";
mail.Subject="알았어?";
SmtpMail.SmtpServer="localhost";
SmtpMail.Send(메일);
</script>
일반적으로 시스템은 IIS와 함께 제공되는 기본 SMTP 가상 서버를 호출하여 전자 메일을 보냅니다. 그러나 다음과 같은 오류 메시지가 자주 발생합니다.
서버가 하나 이상의 수신자 주소를 거부했습니다. 서버 응답은 다음과 같습니다. 550 5.7.1 [email protected] 에 대해 릴레이할 수 없습니다.
이 오류의 원인은 주소가 잘못되었을 가능성뿐만 아니라 또 다른 중요한 이유가 있습니다. 위에서 언급한 것처럼 IIS에는 실제 이메일 기능이 없으며 "SMTP 가상 서버"만 사용하여 이메일을 전달합니다. MSDN에는 다음 팁이 있습니다.
로컬 SMTP 서버(Windows 2000 및 Windows Server 2003에 포함)가 직접 SMTP 트래픽(포트 25를 통해)을 차단하는 방화벽 뒤에 있는 경우 스마트한 방법이 있는지 확인해야 합니다. 네트워크에서 사용 가능한 호스트 인터넷으로 향하는 SMTP 메시지를 중계하는 데 사용할 수 있습니다.
스마트 호스트는 내부 SMTP 서버에서 인터넷으로 직접 보낸 아웃바운드 이메일을 중계하는 SMTP 서버입니다. 스마트 호스트는 이메일 게이트웨이 역할을 하기 위해 내부 네트워크와 인터넷 모두에 연결할 수 있어야 합니다.
기본 SMTP 가상 서버 - 속성 - 액세스 - 릴레이 제한을 열어보면 이 전달 또는 릴레이 기능이 제한되어 있음을 알 수 있습니다. 위에서 언급한 문제를 해결하려면 제한 목록에 이 서버를 사용해야 하는 호스트의 IP 주소를 추가하세요.
IIS와 함께 제공되는 SMTP 가상 서버를 사용하지 않고 IMail, Exchange 등 다른 실제 메일 서버를 사용하는 경우 서버에서 보낸 사람 인증(ESMTP)을 요구하는 문제가 자주 발생합니다. 보낸 사람의 신원 확인이 필요한 서버를 사용하는 경우 다음과 같은 오류가 발생합니다.
서버가 하나 이상의 받는 사람 주소를 거부했습니다. 서버 응답은다음과
같습니다. 550은 로컬 호스트가 아니고 게이트웨이도 아닙니다.
ASP 문제를 해결할 수 있는 방법은 없습니다. CDO 구성 요소(CDONTS의 상위 구성 요소)만 직접 사용할 수 있습니다.
conf.Fields[CdoConfiguration.cdoSMTPAuthenticate].Value=CdoProtocolsAuthentication.cdoBasic;
conf.Fields[CdoConfiguration.cdoSendUserName].Value="브룩스";
conf.Fields[CdoConfiguration.cdoSendPassword].Value="XXXXXXX";
.Net Framework 1.1에서는 ESMTP 메일 서버에서 보낸 사람 ID를 쉽게 늘릴 수 있도록 Fields 컬렉션이 MailMessage 구성 요소에 추가되었습니다. 확인 문제. 그러나 이 방법은 .Net Framework 1.0 버전이 아닌 .Net Framework 1.1에만 적용됩니다. 발신자 인증을 통해 이메일을 보내는 절차는 다음과 같습니다.
<%@ Import Namespace="System.Web.Mail" %>
<스크립트 runat="서버">
MailMessage mail=new MailMessage();
mail.From=" [email protected] ";
mail.To=" [email protected] ";
mail.BodyFormat=MailFormat.Text;
mail.Body="테스트 smtp 메일입니다.";
mail.Subject="알았어?";
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(메일);
</script>
이 방법을 사용하면 더 이상 Jmail 및 EasyMail과 같은 타사 구성 요소에 의존할 필요가 없으며 간단히 SmtpMai를 사용하여 이메일 전송을 완료할 수 있습니다!