시나리오
게임 종료시 유저가 스샷을 메일로 전송 받고 싶어 할 경우
이메일을 입력하고(게임상에서) 보내기를 하면
클라이언트가 서버에(이미 약속된) 스샷 파일을 저장하고, 유저 이메일과 저장한 파일 수 를 send_email.asp로 호출하면 해당 유저의 스샷 파일을 이메일로 전송한다.
전송 후 이미지는 삭제
<%@ CODEPAGE="65001" LANGUAGE="VBSCRIPT" %>
<%
Session.Codepage = "65001"
Response.Codepage="65001"
Response.CharSet = "utf-8"
Response.Expires = -1
Response.cacheControl = "no-cache"
Response.AddHeader "Pragma","no-cache"
Response.ContentType="text/html;charset=utf-8"
Response.Expiresabsolute = Now() - 1
Response.AddHeader "cache-control","private"
Server.ScriptTimeOut = 7200
%>
<%
'실행 URL 샘플 : http://도메인/send_email.asp?toEmail=test@nate.com&fileCnt=100
'파일 저장 경로 : http://도메인/files
'저장시 파일명 형식 : 이메일주소_1.jpg, 이메일주소_2.jpg, 이메일주소_3.jpg ....
'//파라미터
toEmail = trim(request("toEmail")) '//받는 사람 이메일
fileCnt = trim(request("fileCnt")) '//파일 갯 수
If fileCnt = "" Or fileCnt > 30 Then fileCnt = 30 '최대 30개
If toEmail = "" Or Instr(toEmail, "@") < 1 Then
Response.Write "{""state"":false, ""msg"":""이메일 주소가 올바르지 않습니다""}"
Response.End
End If
'//기본 값
fromEmail = "Test<test@gmail.com>"
subject = "제목 입니다"
body = "내용 입니다"
Dim CDOMail, iConf
Set CDOMail = Server.CreateObject("CDO.Message")
Set iConf = CDOMail.Configuration
With iConf.Fields
'.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1
'.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
'.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "local"
'.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "C:\Inetpub\mailroot\Pickup"
'.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 '1일 경우 로컬(SMTP), 2일 경우 외부(SMTP)로 메일전송
.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" '서버 주소
.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 'SMPT 포트
.item("http://schemas.microsoft.com/cdo/configuration/smtpaccountname") = "Test" '계정 이름
.item("http://schemas.microsoft.com/cdo/configuration/sendmailaddress") = fromEmail '보내는 메일
.item("http://schemas.microsoft.com/cdo/configuration/smtpuserreplyemailaddress") = fromEmail '회신 이메일
.item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdo basic
.item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
.item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "계정 아이디" '메일서버 계정 ID
.item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "계정 패스워드" '메일서버 계정 비밀번호
.Update
End With
CDOMail.From = fromEmail
CDOMail.To = toEmail
CDOMail.CC = "" '참조 이메일 주소
CDOMail.Subject = subject
CDOMail.HTMLBody = body
CDOMail.BodyPart.Charset="utf-8"
CDOMail.HTMLBodyPart.Charset="utf-8"
filePath = "/경로/files" '//파일 저장 경로
Set fso = Server.CreateObject("Scripting.FileSystemObject")
DirectoryPath = Server.mapPath(filePath & "/") & "\" & toEmail & "_"
'루프를 돌면서 파일경로가 있을경우 메일에 attach.
For i = 1 to fileCnt
If (fso.FileExists(DirectoryPath & i & ".jpg") = True ) Then ' 같은 이름의 파일이 있을 때
'Set iBp = CDOMail.AddAttachment("E:\경로\files\이메일주소_1.jpg")
'Set iBp = CDOMail.AddAttachment("http://도메인/경로/files/이메일주소_2.jpg")
Set iBp = CDOMail.AddAttachment(DirectoryPath & i & ".jpg") ' 파일 경로 예) c:\test.txt
iBp.ContentMediaType="application/octet-stream"
End If
Next
'이메일 전송
CDOMail.send
'//전송한 파일 삭제
For i = 1 to fileCnt
If (fso.FileExists(DirectoryPath & i & ".jpg") = True ) Then ' 같은 이름의 파일이 있을 때
fso.DeleteFile DirectoryPath & i & ".jpg"
End If
Next
Response.Write "{""state"":true, ""msg"":""이메일이 전송되었습니다""}"
Response.End
%>
웹에서 폼으로 파일 받아서 전송할 경우는 아래 참조해서 재구성 해야함
<%@ CODEPAGE="65001" LANGUAGE="VBSCRIPT" %>
<%
Session.Codepage = "65001"
Response.Codepage="65001"
Response.CharSet = "utf-8"
Response.Expires = -1
Response.cacheControl = "no-cache"
Response.AddHeader "Pragma","no-cache"
Response.ContentType="text/html;charset=utf-8"
Response.Expiresabsolute = Now() - 1
Response.AddHeader "cache-control","private"
Server.ScriptTimeOut = 7200
%>
<%
' ABC Upload Component 객체 생성
Set abcForm = Server.CreateObject("ABCUpload4.XForm")
Server.ScriptTimeout = 3600
abcForm.AbsolutePath = True
abcForm.Overwrite = False
abcForm.maxuploadsize = int(1024 * 1024 * 100) '(100M)
fromEmail = "보내는 사람 이메일"
toEmail = "받는사람 이메일"
subject = "제목 입니다"
body = "내용 입니다"
' ------------- 기존구문
Dim CDOMail, iConf
Set CDOMail = Server.CreateObject("CDO.Message")
Set iConf = CDOMail.Configuration
With iConf.Fields
'.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 1
'.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
'.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "local"
'.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory") = "C:\Inetpub\mailroot\Pickup"
'.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 '1일 경우 로컬(SMTP), 2일 경우 외부(SMTP)로 메일전송
.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com" '서버 주소
.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465 'SMPT 포트
.item("http://schemas.microsoft.com/cdo/configuration/smtpaccountname") = "Test" '계정 이름
.item("http://schemas.microsoft.com/cdo/configuration/sendmailaddress") = fromEmail '보내는 메일
.item("http://schemas.microsoft.com/cdo/configuration/smtpuserreplyemailaddress") = fromEmail '회신 이메일
.item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdo basic
.item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true
.item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "계정 아이디" '메일서버 계정 ID
.item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "계정 패스워드" '메일서버 계정 비밀번호
.Update
End With
CDOMail.From = fromEmail
CDOMail.To = toEmail
CDOMail.CC = "" '참조 이메일 주소
CDOMail.Subject = subject
CDOMail.HTMLBody = body
CDOMail.BodyPart.Charset="utf-8"
CDOMail.HTMLBodyPart.Charset="utf-8"
If abcForm("file") <> "" Then
rCnt = abcForm("file").count
Else
rCnt = 0
End If
Dim strFileName()
Dim strFileSize()
Dim strFileType()
Dim strFileWholePath()
Redim Preserve strFileName(rCnt)
Redim Preserve strFileSize(rCnt)
Redim Preserve strFileType(rCnt)
Redim Preserve strFileWholePath(rCnt)
'루프를 돌면서 파일경로가 있을경우 파일저장하고 attach.
For i = 1 to rCnt
set oFile = abcForm(trim("file"))(i)
filename = oFile.SafeFileName
'실제적인 파일 업로드를 처리하는 부분
If oFile.FileExists Then
strFileName(i) = oFile.SafeFileName
strFileSize(i) = oFile.Length
strFileType(i) = oFile.FileType
If oFile.Length > 1024 * 1024 * 50 Then
Response.Write "<script language=javascript>"
Response.Write "alert(""50M 이상의 사이즈인 파일은 업로드하 실 수 없습니다"");"
Response.Write "history.back();"
Response.Write "</script>"
Response.end
Else
strFileWholePath(i) = GetUniqueName(strFileName(i), strFileType(i), DirectoryPathMail, 0)
oFile.Save strFileWholePath(i)
End If
End If
'파일 업로드 처리 완료..
' 첨부파일 추가
If oFile.FileExists Then '첨부파일이 있을 경우
Set iBp = CDOMail.AddAttachment(strFileWholePath(i))
iBp.ContentMediaType="application/octet-stream"
End If
Next
' --- 기존구문
CDOMail.send
%>
참조
http://zeronica.tistory.com/18
http://19park.tistory.com/4
https://m.blog.naver.com/PostView.nhn?blogId=shooter100&logNo=80156105974&proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F
gmail SMTP 정보
https://support.google.com/mail/answer/7126229?visit_id=636749258342388092-2200363241&hl=ko&rd=1
gmail 오류 발생시
https://forum.winhost.com/threads/sending-cdo-email-using-gmail.18710/
'[ Web 관련 ] > asp' 카테고리의 다른 글
내 아이피 조회 (접속 아이피) (0) | 2019.02.25 |
---|---|
숫자형 체크 (0) | 2018.12.19 |
IIS 7.5 오류페이지 설정 방법 (ASP/ASPX) (0) | 2018.09.27 |
파일 업로드 제한 늘리기, IIS설정 (WIN2012, ABCUpload4 기준) (0) | 2018.09.19 |
강제 파일 다운로드 하기 (0) | 2018.08.31 |