새로 출시된 ASP.NET 2.0 버전에서 Microsoft는 더 이상 System.Web.Mail 네임스페이스 사용을 권장하지 않으며 이를 새로운 System.Net.Mail 네임스페이스로 대체합니다. 이 새 라이브러리에는 많은 새로운 기능이 도입되었지만 이메일 전송 방식에 몇 가지 사소한 버그가 있습니다.
1. 메일 보내기
이러한 작은 오류를 자세히 논의하기 전에 샘플 코드를 살펴보겠습니다(파일 시작 부분에 "using System.Net.Mail"을 추가했다고 가정합니다).
MailMessage msg = new MailMessage();
msg.From = new MailAddress(" [email protected] ", "사람 이름");
msg.To.Add(new MailAddress(" [email protected] ", "수취인 이름");
msg.To.Add(new MailAddress(" [email protected] ", "수취인 2의 이름");
msg.Subject = "메시지 제목";
msg.Body = "메일 본문 내용";
msg.IsBodyHtml = true;
msg.Priority = MailPriority.High;
SmtpClient c = new SmtpClient("mailserver.domain.com");
c.Send(msg);
위의 코드는 메시지 지정에 대한 몇 가지 사소한 변경 사항을 제외하면 이전 버전의 구현과 크게 다르지 않습니다. 주소를 직접 생성하는 대신 시스템이 자동으로 주소를 생성하도록 할 수 있습니다. 이메일 주소와 이름을 지정하면 메시지에 다음이 자동으로 표시됩니다.
"Person's Name" < [email protected] >
이는 이메일 주소의 "올바른" 형식입니다. 물론 위와 똑같은 방법으로 To, CC, BCC 세트에 여러 주소를 추가로 추가할 수 있습니다. 이러한 방식으로 프로그래밍 방식으로 많은 수의 메시지를 보내는 것이 각 메시지를 개별적으로 보내는 것보다 훨씬 쉽습니다. 대량 메일을 보내려면 BCC 속성에 여러 주소를 추가하기만 하면 됩니다.
2. 기존 문제
이제 존재하는 작은 오류를 분석해 보겠습니다.
앞서 언급했듯이 이 새로운 네임스페이스에는 몇 가지 사소한 버그가 있습니다. 첫 번째는 이메일을 보낼 때 헤더 정보가 모두 소문자로 추가된다는 것입니다. 그러나 SMTP 이메일에 대한 RFC 사양은 이메일 헤더의 대문자 사용 방법을 지정하지 않습니다. 그러나 많은 스팸 필터링 프로그램은 헤더가 제대로 대문자로 사용되지 않는 이메일 메시지를 제한합니다.
또 다른 오류는 우선순위 설정과 관련이 있습니다. 우선순위 설정을 통해 사용자는 메일 클라이언트에서 메시지의 중요성을 지정할 수 있습니다. 이메일 헤더의 형식(모두 소문자로 변환) 방식으로 인해 내 이메일 프로그램(Eudora)은 해당 우선순위 플래그를 인식하지 못하므로 이 이메일을 중요하다고 구체적으로 표시하지 않습니다. 사소한 것처럼 보일 수도 있지만 System.Web.Mail의 새 버전으로 전환해야 할 뚜렷한 이유는 없는 것 같습니다.
그러므로 나는 이 문제를 계속해서 탐구할 것입니다. 정말로 좋은 해결 방법을 찾을 수 없다면 이전 System.Web.Mail로 돌아가서 위의 경고 문제를 더 효과적으로 해결하겠습니다.