티스토리 뷰

CDO SMTP를 쓰려면 iis6 가상서버를 설치해야한다.
프로그램추가/제거에서 SMPT 서버 설치 2개 선택하고 설치하면 됨.

c:\inetpub\mailroot 
디렉토리에 읽기/쓰기 권한을 부여 해야만 CDO 메일이 발송된다.

windows 2008 에서는 사용자 계정 컨트롤이라는게 존재하므로
각각의 경우에 맞는 계정들에게  읽기/쓰기 권한을 줘야 한다.

권한을 주지 않았을 경우는 '액세스가 거부되었습니다' 와 같은 오류가 발생했다.

예를 들자면,

작업스케쥴에 등록해서 vbs 같은것을 돌릴때는
mailroot 디렉토리에 해당 작업 실행 계정 권한을 추가하고

ASP와 같은 웹 스크립트를 돌릴때는
mailroot 디렉토리에 IIS_IUSRS‎ 계정 권한을 추가하라는 것이다.

또한, 아래의 VBS 소스 중 pickup 디렉토리 지정하는부분이 내 경우엔 꼭 필요해져 버렸다.
지정하지 않았을 경우 'pickup 디렉터리 경로가 필요하지만 지정되지 않았습니다' 오류가 발생했다.

'*************************************************************************
'* CDO 메일 발송
'*------------------------------------------------------------------------
'* mail_from = "홍길동"
'* mail_to (여러사람일 경우는 , 로 구분)
'* mail_html = "" : "text" : "html"
'*************************************************************************
Function mail(mail_from, mail_to, mail_subject, mail_body, mail_html, mail_charset, mail_attach)
	On Error Resume Next '// 오류 잡기

	Dim objMessage, objConfig, Flds

	SET objMessage = CreateObject("CDO.Message")
	SET objConfig = Createobject("CDO.Configuration")

	'''''''''''''''''' Setting the SMTP Server ''''''''''''''''''''''''
	Dim schema : schema = "http://schemas.microsoft.com/cdo/configuration/"
	SET Flds = objConfig.Fields
	With Flds
		.Item(schema & "sendusing") = 1	'// SMTP 위치? 1=로컬 : 2=외부
		.Item(schema & "smtpserver") = "localhost"	'// 서버 주소
		.Item(schema & "smtpserverport") = 25			'// 서버 포트
		.Item(schema & "smtpconnectiontimeout") = 30	'// 접속시도 제한시간
		'.Item(schema & "smtpauthenticate") = 1  '// SMTP 접속 인증방법 설정
		'.item(schema & "sendusername") = "id@domain" '// SMTP 서버에 인증 ID
		'.item(schema & "sendpassword") = "******"  '// SMTP 서버에 인증 암호
		'.Item(schema & "smtpusessl") = 1
		.Item(schema & "smtpserverpickupdirectory") = "C:\inetpub\mailroot\Pickup"
		.update
	End With

	SET objMessage.Configuration = objConfig

	With objMessage
		.From = mail_from
		.To = mail_to
		.CC = ""
		.Subject = mail_subject

		If mail_charset = "" Then mail_charset = "ks_c_5601-1987"

		If LEFT(mail_body, 7) = "http://" Then
			.CreateMHTMLBody mail_body
			'echo(mail_body)
		ElseIf LEFT(mail_body, 7) = "file://" Then
			.CreateMHTMLBody mail_body
		Else
			.BodyPart.Charset = mail_charset

			If mail_html = "text" Then
				.TextBody = mail_body
			ElseIf mail_html = "html" Then
				.HTMLBody = mail_body
				.HTMLBodyPart.Charset = mail_charset
			End if
		End if

		If isset(mail_attach) Then
			.AddAttachment mail_attach
		End if

		.DSNOptions = 14
		'.Fields("urn:schemas:mailheader:return-receipt-to") = "id@domain"
		'.Fields("urn:schemas:mailheader:disposition-notification-to") = "id@domain"
		.Fields.update
		.Send	'// 메일 보내기
	End With

	SET objConfig = Nothing
	SET objMessage = Nothing

	If Err <> 0 Then mail = Err.Description Else mail = ""	'// 오류 발생하면 오류상세를 반환
End Function

'OS-서버-서비스 > Windows' 카테고리의 다른 글

ASP HTTP <-> HTTPS 세션 공유 안되는 문제  (0) 2011.07.05
Windows 2008 SMTP  (0) 2011.07.04
iis7 URL 재작성 (Rewrite)  (0) 2011.06.21
iis7 인터넷 익명 계정  (0) 2011.06.21
프로세스 죽이는 명령 Taskkill  (0) 2011.06.15
댓글