2010-07-13 6 views
8

요구 사항 중 하나가 ASP.NET 응용 프로그램을 다시 작성하는 프로젝트에서 작업하고 있습니다. 이전 ASP.NET 응용 프로그램은 .NET Framework 1.1을 기반으로했습니다. 새로운 ASP.NET 응용 프로그램은 .NET Framework 3.5를 기반으로합니다.ASP.NET - SmtpClient - 원격 서버에 연결할 수 없습니다.

이전 웹 응용 프로그램의 기능 중 하나는 전자 메일을 보내는 기능이었습니다. 이전 코드에서는 System.Web.Mail.SmtpMail 클래스를 사용했지만 새 웹 응용 프로그램에서는 System.Net.Mail.SmtpClient 클래스를 사용했습니다.

개발 서버에서이를 테스트 할 때 모든 것이 정상적으로 수행되었습니다. 그러나 우리는 소프트웨어를 테스트하는 2 명의 베타 클라이언트를 가지고 있으며, 둘 다 새 웹 응용 프로그램에서 전자 메일을 보내는 데 문제가 있습니다. 다음과 같이

특정 예외입니다 :

원격 서버에 연결할 수 없습니다

---> System.Net.Sockets.SocketException : 대상 컴퓨터가 적극적

으로 거부했기 때문에 없음 연결을 만들 수 있습니다

이전 및 새 ASP.NET 응용 프로그램이 모두 동일한 서버 (Windows Server 2003)에 있습니다. 둘 다 동일한 Exchange 메일 서버를 사용하고 있습니다. 이전 ASP.NET 응용 프로그램이 전자 메일을 성공적으로 보낼 수 있지만 새로운 전자 메일 응용 프로그램이 전자 메일을 보낼 수없는 이유는 무엇입니까?

이전 코드를 살펴본 결과 인증 양식을 사용하지 않고 발신자의 전자 메일 주소,받는 사람의 전자 메일 주소, 제목, 본문 및 서버를 지정하고 메시지를 보냈습니다. 새로운 코드에서 똑같은 일을했지만 SmtpClient 클래스를 사용한다는 점만 다릅니다.

System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage(); 
mail.To.Add(messageTo); 
mail.From = new MailAddress(messageFrom); 
mail.Subject = messageSubject; 
mail.Body = messageBody; 

SmtpClient client = new SmtpClient(); 
client.Host = smtpServer; 
client.Send(mail); 
+0

Exchange 로그에 연결을 거부하는 내용이 있습니까? – David

+0

나는 그들에게 접근 할 수 없기 때문에 베타 클라이언트가 그들에게 접근 할 수 있다고 생각하지 않는다. 다시 말하지만, 이것은 우리의 목적을 위해 잘 작동했습니다. 꽤 기본적인 기능입니다. – Chris

+0

서버를 어떻게 지정합니까? SmptClient의 생성자 또는 web.config에서? 몇 가지 코드를 게시 할 수 있습니까? – onof

답변

5

System.Web.Mail.SmtpMail.SmtpServer는 "원격 서버에 연결할 수 없습니다가 ---> System.Net.Sockets.SocketException : 대상 컴퓨터가 적극적으로 거부했기 때문에 없음 연결이되지 않았다"는 오류는 일반적으로 TCP 포트는 것을 의미 연결하려고하면 어떤 서비스도 듣지 않습니다. 즉, SMTP 연결을 제외하고는 닫혀 있고 TCP 연결을 만들 수 없습니다.

네트워크 스택의 하위 수준에서 오류가 발생하고 메일 서버에 연결 시도가 표시되지 않으므로 Exchange 로그에 아무 것도 표시되지 않습니다.

.net1.1 코드도 게시 할 수 있습니까? 가장 가능성있는 문제는 서버가 비표준 포트에서 수신 중이며 새 코드에서 해당 포트를 지정하지 않는다는 것입니다. Port 속성을 사용하여 포트를 설정해야하며, 단순히 Host 속성에 추가 할 수는 없습니다.

잘못된 :

client.Host = "mail.someco.com:10000"; 

올바른 :

client.Host = "mail.someco.com"; 
client.Port = 10000; 
0

당신은 System.Web.Mail.SmtpMail의은 SmtpServer 속성이 이전 코드에 설정되어 있는지입니다 : 아래

는 새로운 ASP.NET 응용 프로그램에서 코드인가? 이 속성을 설정하지 않고 사용할 수 있었고 로컬 서버의 SMTP 서비스를 사용했습니다.

0

이 유 SMTP 호스트 구성에 대한 web.config 파일을 확인 했습니까? config 섹션을 앱에 복사해야합니다.

3

바이러스 백신 소프트웨어를 사용하는 경우 바이러스 백신 소프트웨어인지 여부를 확인하려면 로그를 확인하십시오. McAffee가 내 메일을 차단할 때도 같은 문제가 발생했습니다 (보안 정책이 있습니다 - 메일 링 웜의 메일 발송 방지). 이 정책을 편집하고 응용 프로그램을 예외 목록에 추가하십시오. 제 경우에는 이것이 문제를 분류했습니다. 그것이 효과가 있는지 확인하십시오.

관련 문제