티스토리 뷰

반응형

1. 서론

 

 

asp에서 smtp를 이용하여 메일을 발송할때 사용하는 코드를 설명하겠다.

아래 코드는 발송하는 메일이 원격 메일 서버의 메일 id를 사용하는 방법으로

로컬이 아닌 원격지에서 회원가입 메일을 보내는 법을 설명하겠다.

 

우선 메일 테스트를 하기 위해 naver 메일 주소로 메일을 보내보자.

 

 

 

2. naver 메일의 SMTP 서버 설정

 

1. 우선 네이버에 로그인 한뒤 naver 메일을 들어간다.

2. 하단의 외부메일 가져오기 클릭

3. 상단의 POP3/IMAP설정 클릭

4. POP3/SMTP 사용을 사용함으로 클릭한다.

 

 

 

 

 

메일 전송 코드 원본

 

 

 

<%
Dim mailcontents '메일 내용을 담을 객체
Dim iMsg,iConf '
Dim sql,sql2,rs,id,jerry
 
jerry = trim("test@naver.com"'trim() 함수는 문자열 앞뒤 공백을 제거한다.
 
sql = "select id from member where id ='" & jerry &"'"         'db에 보낼사람의 id가 있을 경우 id를 불러온다.
 
set rs=db.execute(sql)
if rs.eof or rs.bof then
else
do until rs.eof
    id = rs(0)
 
    rs.movenext
loop
rs.close
end if
 
randomize 
'랜덤함수를 사용하기 위해 Randomize문은 수를 사용하여 Rnd 함수의 난수 발생기를 초기화하고 새 랜덤값을 뽑아낸다.
'randomize를 사용하지 않으면 매번 똑같은 랜덤 값을 뽑아낸다.
    
    dim random,mailkey
    
    Random = array(int((122-97)*rnd + 97),int((122-97)*rnd + 97),int((122-97)*rnd + 97),int((122-97)*rnd + 97),int((9999-1000)*rnd + 1000))
 
    'chr() 함수는 아스키 코드의 문자열로 변형가능
    '랜덤 값을 하나씩 뽑아내 mailkey를 완성
    mailkey = chr(random(0))&""&chr(random(1))&""&chr(random(2))&""&chr(random(3))&""&random(4)
    
    sql2 = "update member set mailkey ='"& mailkey & "' where id = '"& id &"' " 'db에 해당 id가 존재하는 경우 mailkey를 넣는다
    db.execute sql2,,adexecutenorecords
 
 
 
'보낼 메일에 넣을 내용 적기
'chr(10) 함수는 아스키 코드의 줄바꿈(\n) 문자열로 변형가능
    mailcontents=mailcontents & chr(10& " <html>"
 
    mailcontents=mailcontents & chr(10& " <head> "
 
    mailcontents=mailcontents & chr(10& " <title>회원가입 메일인증</title> "
 
    mailcontents=mailcontents & chr(10& " <meta http-equiv=""Content-Type"" content=""text/html; charset=euc-kr""> "
 
    mailcontents=mailcontents & chr(10& " </head> "
 
    mailcontents=mailcontents & chr(10& " 내용 : 회원가입을 축하합니다. 메일 인증키:" + mailkey
 
    mailcontents=mailcontents & chr(10& " </body> "
 
    mailcontents=mailcontents & chr(10& " </html>"
 
 
 
 
 
    Set iConf = Server.CreateObject("CDO.Configuration"'로컬이 아닌 원격지 메일 서버를 사용하여 메일을 발송하는 경우 개체 생성
 
    With iConf.Fields
 
       .item("http://schemas.microsoft.com/cdo/configuration/sendusing"= 1 '1일 경우 로컬(SMTP), 2일 경우 외부(SMTP) 원격지로 메일전송
 
       .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory"= "C:\Inetpub\mailroot\Pickup" 'mailroot 폴더 권한 설정
        '로컬 smtp를 이용해 보내는 경우 pickup 디렉토리를 이용하는데 폴더에 적절한 권한을 부여
 
       .item("http://schemas.microsoft.com/cdo/configuration/smtpserver"= "smtp.hiworks.co.kr" 'Host 설정 '메일서버 IP 또는 메일서버 URL '네이버는 smtp.naver.com
 
       .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"= 30 '접속 시도할 제한 시간을 설정(30초)
 
       .item("http://schemas.microsoft.com/cdo/configuration/smtpserverport"= 587 'port번호 'gmail포트 번호는 465
 
       .item("http://schemas.microsoft.com/cdo/configuration/smtpaccountname"= "test@naver.com" '계정이름'외부 smtp 이용시 사용
 
       .item("http://schemas.microsoft.com/cdo/configuration/sendmailaddress"= "test@naver.com" 
 
       .item("http://schemas.microsoft.com/cdo/configuration/smtpuserreplyemailaddress"= "test@naver.com" '회신 메일 주소
 
       .item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"= 1 'cdo basic
 
       .item("http://schemas.microsoft.com/cdo/configuration/sendusername"= "test@naver.com" '메일서버 계정 ID
 
       .item("http://schemas.microsoft.com/cdo/configuration/sendpassword"= "naver_password" '메일서버 계정 비밀번호
 
       .Update
 
    End With
 
 
 
    'CDO 메시지 개체 생성
 
Set iMsg = Server.CreateObject("CDO.Message"'메일 발송을 위해 개체 생성
 
    iMsg.Configuration = iConf '로컬이 아닌 외부 smtp 메일 발송시 사용
 
    Set iConf = Nothing
 
    With iMsg
 
       '.BodyPart.Charset = "ks_c_5601-1987" '한글설정
 
       .To = id '받는 사람 메일 주소
 
       .From = "test@naver.com"
 
       .Subject = "[test] 회원가입을 축하드립니다!"
 
       .HtmlBody = mailcontents 'HtmlBody나 TextBody 둘중 하나 무조건 사용하기
 
       '.CC = "test@test.com" ' 참조 메일주소
 
       '.Bcc = "test@test.com" ' 숨은 참조 메일주소
 
       '.Bcc = "c:/user/desktop/test.jpg" '첨부파일, 절대경로로 지정
 
       .Send '실제 메일 발송 코드
 
    End With
 
    Set iMsg = Nothing '메일 발송 개체 비활성화
 
 
 
'메일 보낸후 alert 띄우기
        response.write"<script language='javascript'>"
        response.write"alert('회원님의 메일로 인증메일이 전송되었습니다. 메일인증 후 정상적으로 서비스 이용이 가능합니다.');"
        response.write"self.location.href='main.asp?id="& id &"';"
        response.write"</script>"
        response.end
 
%>
 
 
cs

 

 

 

 

위 메일 코드를 사용하여 메일을 보내보자.

 

이글 쓰는데 저장 안 해놔서 한번 날리고 다시 썼다. 너무 오래 걸린 포스팅.. 정말 억울 ㅠㅠ

 

반응형
댓글
공지사항