2009-10-13 21 views
21

메일을 보내기 위해 IIS에서 SMTP 서버를 설정하려고합니다. SMTP 서버는 C#의 ASP.NET 코드에서 사용하기위한 것입니다.localhost를 사용하여 메일 보내기 SMTP

나는 이전에 Gmail에서 smtp를 사용하고 있었는데, smtp.gmail.com을 보안 포트와 나의 Gmail uid/pwd가있는 호스트로 제공했습니다. 그게 잘 됐어. 여기에 사용 된 코드가 있습니다.

SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(uname,pwd); 
smtpClient.EnableSsl = true; 
smtpClient.Send(mailMessage); 

지금 내가 값 내가 매개 변수 UseDefaultCredentials 및 자격 증명에 대해 제공되어야 하는지를 IIS, 에 로컬 호스트 SMTP 서버를 사용할 계획입니다. 포트 25를 통해 EnableSsl에 false를 할당합니다.

또한 가장 간단한 SMTP 가상 서버 구성이 될 수 있습니다.

답변

14

나는 당신이 사용할 수있는 로컬 호스트에서 생각 :

로컬 IIS의 SMTP 서비스를 사용하는
SmtpClient smtpClient = new SmtpClient(); 
smtpClient.UseDefaultCredentials = true; 
smtpClient.Send(mailMessage); 
+0

작동하지 않습니다. "알 수없는 SMTP 호스트"오류가 발생합니다. – lenden

+0

IIS SMTP 서비스를 시작 했습니까? – Natim

+0

네, 그래도 작동하지 않습니다 (저는 win8을 가지고 있지만 이해할 수있는대로 나는 모든 것을 올바르게 작동 시켰습니다). 웹 구성에 ""과 같은 메시지를 써야합니까? 그것은 여전히 ​​"알 수없는 smtp 호스트"입니다.이 3 줄을 쓰면 – lenden

3

smtp 서버를 구성하는 방법에 따라 다릅니다. 자격 증명을 전혀 사용하지 않고 로컬 연결 만 허용하도록 서버를 구성하면됩니다.

+0

@Joel : 내 SMTP 서버 설정 : 인증 : 익명 액세스 IP 주소 : 모두 할당되지 않음 아웃 바운드 보안 : 호기심 익명 액세스,이 자격 증명없이 메일을 보내기위한 올바른 구성됩니다. – pencilslate

+0

그게 serverfault에 대한 질문입니다. –

26

이 PickupDirectoryFromIis에 DeliveryMethod을 설정합니다. 예를 들어 :

smtpClient.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 

이 완전히 네트워크 계층을 무시하고 디스크에 직접 메시지를 작성합니다. 수다스러운 SMTP 프로토콜을 사용하는 것보다 훨씬 빠릅니다. 당신은 위의 코드를 사용하는 경우

, 그것은 당신이 당신의 코드의이 부분을 없애 수 있다는 것을 의미합니다 : 당신이 나를 위해 일한 말

smtpClient.UseDefaultCredentials = false; 
smtpClient.Host = "smtp.gmail.com"; 
smtpClient.Port = 587; 
smtpClient.Credentials = new NetworkCredential(uname,pwd); 
smtpClient.EnableSsl = true; 
+4

이것은 로컬 IIS 픽업 디렉터리 사용에 대한 정답입니다. 파일을 작성하기 만하면 모든 자격 증명을 사용하지 않으므로 IIS가 대신 파일을 보냅니다. –

1

텍사스 NATIM을. 우리의 Exchange 2007 서버와 통합 인증을 사용하는 인트라넷 앱을 지금 가지고 계십시오 :

Dim msg As New MailMessage() 
Dim smtp As SmtpClient 

msg.From = New MailAddress(strFrom) 
msg.To.Add(strTo) 
msg.Subject = strSubject 
msg.Body = strBody 

smtp = New SmtpClient("ServerName") 
smtp.UseDefaultCredentials = True 
smtp.Send(msg) 
2

활성화 릴레이를 사용해 보셨습니까?

IIS6 관리자를 찾으면 (IIS 검색에서 2 개의 결과가 나올 수 있음) SMTP 서버 속성으로 이동하여 '액세스'를 선택한 다음 릴레이 버튼을 누릅니다.

그럼 당신은 모두를 선택할 수 있습니다 또는에만 허용 127.0.0.1와 같은 특정의 IP의

SMTP Relay

+0

CDOSYS를 사용하고 있으며이 가상 서버가 설치되어있는 서버에서 전자 메일이 원활하게 전송되지만 워크 스테이션에서 유틸리티를 사용해 보면 '서버에 연결하지 못했습니다.'라는 메시지가 나타납니다. 어떤 생각? 워크 스테이션에서이 가상 SMTP 서버를 사용할 수 있고 전자 메일을 보낼 수 있도록 코드에서 변경해야 할 사항. – elmo

0

당신이 로컬 호스트에서 이메일을 테스트 단지 종이 공예 도구를 https://papercut.codeplex.com/

과 변화를 설치 ​​다운로드하려면 호스트 이름은 다음과 같습니다. Papercut은 localhost를 사용하여 보내는 모든 전자 메일을 캡처합니다.

smtpClient.UseDefaultCredentials = false; 
    smtpClient.Host = "localhost"; 
    smtpClient.Port = 587; 
    smtpClient.Credentials = new NetworkCredential(uname,pwd); 
    smtpClient.EnableSsl = true; 
+0

또한 smtp4dev는 개발자를위한 로컬 smtp 서버입니다. – Birey