[Classic ASP] 메일보내기
Wdev
2014-11-17

ASP에서 메일을 보내는 경우 CDO.Message를 이용하여 보내야 한다.

사이트내에서 메일보내기는 대게 보내는 메일주소가 일정하므로 보내는 메일주소정보가 함수내 포함하도록 했다.
sendmail 함수내의 Const 부분을 환경에 맞게 수정하여 사용하면 된다.

사용시 중간부분의 "on error resume next" 부분을 주석으로 막고 테스트후 정상작동하는 경우 사용한다.

메일 발송시 보내지는 주소(SEND_USER_NAME)과 실제 메일주소(MAIL_FROM)가 동리하지 않아도 대부분 발송이 되지만 daum의 경우에는 이부분이 동일한지 확인하도록 되어있습니다. 사이트 이용자가 메일수신을 다음으로 하는 경우에 대비하여 되도록 일치하도록 하는 것이 좋습니다.

<%
'===============================
'  use relay SMTP
'===============================
function SendMail( cSubject, cMailTo, cBody )

	Const MAIL_FROM    = "메일러(발송전용)<user@mailserver.com>" 
	Const SMTP_SERVER   = "mail.mailserver.com"
	Const SMTP_SERVER_PORT = 25
	Const SEND_USER_NAME  = "user@mailserver.com" 
	Const SEND_PASSWORD  = "password" 

	Const cdoSendUsingMethod    = "http://schemas.microsoft.com/cdo/configuration/sendusing" 
	Const cdoSendUsingPort     = 2 '== 1일 경우 로컬(SMTP), 2일 경우 외부(SMTP)로 메일전송
	Const cdoSMTPServer      = "http://schemas.microsoft.com/cdo/configuration/smtpserver" 
	Const cdoSMTPServerPort    = "http://schemas.microsoft.com/cdo/configuration/smtpserverport" 
	Const cdoSMTPConnectionTimeout = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" 
	Const cdoSMTPAccountName    = "http://schemas.microsoft.com/cdo/configuration/smtpaccountname" 
	Const cdoSMTPAuthenticate   = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" 
	Const cdoBasic         = 1 
	Const cdoSendUserName     = "http://schemas.microsoft.com/cdo/configuration/sendusername" 
	Const cdoSendPassword     = "http://schemas.microsoft.com/cdo/configuration/sendpassword" 

	on error resume next
	
	dim oConfig ' As CDO.Configuration 
	dim oMessage ' As CDO.Message 
	dim oFields ' As ADODB.oFields 
	
	'== Get a handle on the config object and it's oFields 
	set oConfig = Server.CreateObject("CDO.Configuration") 
	set oFields = oConfig.Fields 
	
	'== set config oFields we care about 
	with oFields 
		.Item(cdoSendUsingMethod) = cdoSendUsingPort 
		.Item(cdoSMTPServer)    = SMTP_SERVER	
		.Item(cdoSMTPServerPort)  = SMTP_SERVER_PORT
		.Item(cdoSMTPAuthenticate) = cdoBasic 
		.Item(cdoSendUserName)   = SEND_USER_NAME
		.Item(cdoSendPassword)   = SEND_PASSWORD
		.Update 
	end with 
		
	set oMessage = Server.CreateObject("CDO.Message") 
	set oMessage.Configuration = oConfig 
	
	with oMessage 
 		.To = cMailTo
		.From = MAIL_FROM
		.Subject = cSubject
		.HTMLBody = cBody 
		.Send 
	end With 
	
	set oMessage = nothing 
	set oFields = nothing 
	set oConfig = nothing 
	
	SendMail = null
end function

'=============================
' use local SMTP service
'=============================
function SendMailLocal( cSubject, cMailFrom, cMailTo, cBody )
	dim oMessage, oConfig, oFields
	
	set oConfig = Server.CreateObject("CDO.configuration")
	set oFields = oConfig.Fields
	
	oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1
	oFields.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
	oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "localhost"
	oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "c:\Inetpub\mailroot\Pickup"
	oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
	oFields.update
	
	set oMessage = Server.CreateObject("CDO.Message")
	set oMessage.Configuration = oConfig
	
	oMessage.from = cMailFrom
	oMessage.to = cMailTo
	oMessage.Subject = cSubject
	oMessage.HtmlBody = cBody
	oMessage.Send

	set oMessage = nothing 
	set oFields = nothing 
	set oConfig = nothing 
		
	SendMailLocal = null
end function
%>

저작권자 © WDEV, 무단전재 및 재배포 금지
ASP/PHP 분류 내의 이전기사