Click or drag to resize

메일 전송

TABS Upload에 포함된 Smtp 컴포넌트를 사용해 ASP 환경에서 메일을 발송할 수 있습니다.

메일 릴레이

Smtp 컴포넌트에서 목적지로 한 번에 메일을 발송할 수 없습니다. 메일은 아래 그림과 같이 발송처에서 메일 서버로 전달된 후 최종 목적지 메일 서버로 전달되어야 합니다. 직접 Smtp 컴포넌트에서 목적지로 메일을 전송할 경우 서버측의 스팸 차단 정책에 의해 거의 대부분의 메일이 차단됩니다. 현재 대부분의 메일 서버는 강력한 스팸 차단 규칙을 운영하므로 임의의 IP에서 메일을 발송할 경우 스팸으로 처리되므로 유의해야 합니다.

security relay

예를 들어, tabslab.com의 웹 서버에서 메일을 발송하는 경우 Smtp 컴포넌트로 메일을 작성해 tabslab.com의 메일 서버로 전달하고 메일 서버는 이를 받아 hotmail.com 메일 서버로 전달하는 구조입니다.

따라서 웹 서버에서 메일을 안정적으로 발송하기를 원한다면 메일 서버를 보유하고 있거나 탭스 메일러와 같은 발송 전용 시스템을 구축해야 합니다.

Note Note

메일캐리어는 탭스랩에서 배포하는 메일 서버로 SMTP/POP3/IMAP 프로토콜을 지원하며 웹메일, 모바일싱크 등 최신 기술을 모두 제공하는 메일 서버입니다. 무료 라이선스가 존재하므로 Smtp 컴포넌트와 연동해 메일 발송 시스템을 구축할 수 있습니다. 소량의 비정기적인 메일을 발송할 때 적합합니다.

Note Note

탭스 메일러는 탭스랩에서 배포하는 전용 메일 발송 서버로 다량의 메일을 효과적으로 발송할 수 있는 기능을 제공합니다. Smtp 컴포넌트와 연동할 경우 일반 메일 서버와 달리 발송 성공 여부, 수신 확인 여부 등의 통계 자료를 참조할 수 있습니다. 탭스 메일러 역시 무료 라이선스가 존재합니다.

메일 서버로 릴레이 프로그래밍

TABSUpload4.Smtp 컴포넌트를 사용하면 쉽게 메일 메시지를 생성해 메일 서버로 전달할 수 있습니다. ServerName 프로퍼티에 메일 서버 호스트 이름 또는 IP 주소를 지정하고 발송자, 수신자, 제목, 본문 등을 지정한 후 Send 메서드를 호출하면 메일 서버로 메일이 전달됩니다.

ASP
Set Smtp = Server.CreateObject("TABSUpload4.Smtp")

Smtp.ServerName = "mail.tabslab.com"
Smtp.ServerPort = 25
Smtp.FromAddress = "help@tabslab.com"
Smtp.AddToAddr "test@hotmail.com", "테스트"
Smtp.Subject = "제목입니다."
Smtp.Encoding = "base64"
Smtp.Charset = "euc-kr"
Smtp.BodyHtml = "<h1>텍스트 본문입니다.</h1>"

Set Result = Smtp.Send()
If Result.Type = SmtpErrorSuccess Then
    Response.Write "메일이 올바르게 전달되었습니다.<p>"
Else
    Response.Write "오류 종류:" & Result.Type & "<br>"
    Response.Write "오류 코드:" & Result.Code & "<br>"
    Response.Write "오류 설명:" & Result.Description
End If

위 예제에서 ServerName에 명시된 메일 서버 호스트 이름을 자사 메일 서버로 지정해야 합니다. mail.tabslab.com을 지정할 경우 tabslab.com은 릴레이 차단 규칙에 따라 메일 전송을 거부합니다. 자사 메일 서버 설정에서 위 코드가 동작하는 웹 서버가 메일을 릴레이할 수 있도록 릴레이 허용에 웹 서버 IP를 추가해야 합니다. 설정이 올바르지 않을 경우 530 Relay denied와 같은 오류가 반환됩니다.

메일 전달 결과는 SmtpError 오브젝트로 반환되며 Type, Code, Description 프로퍼티를 참조해 상세 오류 정보를 확인할 수 있습니다. 일반적으로 자사 메일 서버를 사용하므로 한 번 올바르게 설정되면 메일 서버에 오류가 발생하지 않는한 메일 서버로의 전달은 실패하지 않습니다.