프로그램추가/제거에서 SMPT 서버 설치 2개 선택하고 설치하면 됨.
c:\inetpub\mailroot
디렉토리에 읽기/쓰기 권한을 부여 해야만 CDO 메일이 발송된다.
windows 2008 에서는 사용자 계정 컨트롤이라는게 존재하므로
각각의 경우에 맞는 계정들에게 읽기/쓰기 권한을 줘야 한다.
권한을 주지 않았을 경우는 '액세스가 거부되었습니다' 와 같은 오류가 발생했다.
예를 들자면,
작업스케쥴에 등록해서 vbs 같은것을 돌릴때는
mailroot 디렉토리에 해당 작업 실행 계정 권한을 추가하고
ASP와 같은 웹 스크립트를 돌릴때는
mailroot 디렉토리에 IIS_IUSRS 계정 권한을 추가하라는 것이다.
또한, 아래의 VBS 소스 중 pickup 디렉토리 지정하는부분이 내 경우엔 꼭 필요해져 버렸다.
지정하지 않았을 경우 'pickup 디렉터리 경로가 필요하지만 지정되지 않았습니다' 오류가 발생했다.
01 |
'************************************************************************* |
02 |
'* CDO 메일 발송 |
03 |
'*------------------------------------------------------------------------ |
04 |
'* mail_from = "홍길동<hong@kil.com>" |
05 |
'* mail_to (여러사람일 경우는 , 로 구분) |
06 |
'* mail_html = "" : "text" : "html" |
07 |
'************************************************************************* |
08 |
Function mail(mail_from, mail_to, mail_subject, mail_body, mail_html, mail_charset, mail_attach) |
09 |
On Error Resume Next '// 오류 잡기 |
10 |
11 |
Dim objMessage, objConfig, Flds |
12 |
13 |
SET objMessage = CreateObject( "CDO.Message" ) |
14 |
SET objConfig = Createobject( "CDO.Configuration" ) |
15 |
16 |
'''''''''''''''''' Setting the SMTP Server '''''''''''''''''''''''' |
17 |
Dim schema : schema = "http://schemas.microsoft.com/cdo/configuration/" |
18 |
SET Flds = objConfig.Fields |
19 |
With Flds |
20 |
.Item(schema & "sendusing" ) = 1 '// SMTP 위치? 1=로컬 : 2=외부 |
21 |
.Item(schema & "smtpserver" ) = "localhost" '// 서버 주소 |
22 |
.Item(schema & "smtpserverport" ) = 25 '// 서버 포트 |
23 |
.Item(schema & "smtpconnectiontimeout" ) = 30 '// 접속시도 제한시간 |
24 |
'.Item(schema & "smtpauthenticate") = 1 '// SMTP 접속 인증방법 설정 |
25 |
'.item(schema & "sendusername") = "id@domain" '// SMTP 서버에 인증 ID |
26 |
'.item(schema & "sendpassword") = "******" '// SMTP 서버에 인증 암호 |
27 |
'.Item(schema & "smtpusessl") = 1 |
28 |
.Item(schema & "smtpserverpickupdirectory" ) = "C:\inetpub\mailroot\Pickup" |
29 |
.update |
30 |
End With |
31 |
32 |
SET objMessage.Configuration = objConfig |
33 |
34 |
With objMessage |
35 |
.From = mail_from |
36 |
. To = mail_to |
37 |
.CC = "" |
38 |
.Subject = mail_subject |
39 |
40 |
If mail_charset = "" Then mail_charset = "ks_c_5601-1987" |
41 |
42 |
If LEFT(mail_body, 7) = "http://" Then |
43 |
.CreateMHTMLBody mail_body |
44 |
'echo(mail_body) |
45 |
ElseIf LEFT(mail_body, 7) = "file://" Then |
46 |
.CreateMHTMLBody mail_body |
47 |
Else |
48 |
.BodyPart.Charset = mail_charset |
49 |
50 |
If mail_html = "text" Then |
51 |
.TextBody = mail_body |
52 |
ElseIf mail_html = "html" Then |
53 |
.HTMLBody = mail_body |
54 |
.HTMLBodyPart.Charset = mail_charset |
55 |
End if |
56 |
End if |
57 |
58 |
If isset(mail_attach) Then |
59 |
.AddAttachment mail_attach |
60 |
End if |
61 |
62 |
.DSNOptions = 14 |
63 |
'.Fields("urn:schemas:mailheader:return-receipt-to") = "id@domain" |
64 |
'.Fields("urn:schemas:mailheader:disposition-notification-to") = "id@domain" |
65 |
.Fields.update |
66 |
.Send '// 메일 보내기 |
67 |
End With |
68 |
69 |
SET objConfig = Nothing |
70 |
SET objMessage = Nothing |
71 |
72 |
If Err <> 0 Then mail = Err.Description Else mail = "" '// 오류 발생하면 오류상세를 반환 |
73 |
End Function |
74 |
</hong@kil.com> |
|
1. 서버기능 추가. 서버관리자 -> 기능추가 -> SMTP 서버
※ 기능이 추가되면 관리도구의 IIS(인터넷 정보 서비스) 6.0 관리자에 [SMTP Virtual Server] 가 올라온다.
2. IIS 설정 (IIS 7.0) IIS7.0에 SMTP 전자메일 기능에 전자 메일 주소와 SMTP 서버에 전자 메일 배달 항목에 이메일 주소와 localhost 사용을 체크하고 포트를 지정한다.
3. IIS설정 (SMTP Virtual Server) 속성 > 액세스 > 연결 제어에 127.0.0.1 을 허용해주고 속성 > 액세스 > 릴레이 제한에도 127.0.0.1 을 허용 해준다.
4. System.Net.Mail 이용 MailMessage mail = new MailMessage(); mail.Subject = "제목"; mail.Body = "내용"; SmtpClient client = new SmtpClient("127.0.0.1"); try
5. 사서함을 사용할 수 없습니다. 서버 응답: 5.7.1 Unable to relay for 받는사람메일주소
>> SmtpException 에서 위와 같은 에러가 발생했다면 [SMTP Virtual Server] 에 릴레이 설정이 제대로 되지 않은 경우이다.
※ Windows2008인 경우 IIS 관리도구가 6.0과 7.0 따로 있고 SMTP 는 6.0 관리자에서 확인해야한다. 7.0에 있는 IIS 설정만으로는 메일 보내기 설정은 부족함..
※ Windows2008 에서 SMTP 확인을 위해 cmd 창에서 telnet 127.0.0.1 25 를 입력해서 확인하려면 서버기능추가에서 Telnet Client 를 설치해야 한다.!!
※ 메일이 전달이 안될때 무엇보다 먼저 살펴봐야 하는 것은 SMTP 서비스가 돌아가고 있는지 여부!!! [출처] ASP.NET 메일보내기 (Windows2008 )|작성자 시어 |
- Windows 2008 Server R2
- IIS 7.5 (SMTP만 6.0)
- ASP
이렇게 해서 확인했는데도 실패하는거다. 아래와 같이..