2009-08-06 4 views
0

다음과 같은 코드가 있습니다 (실제 이름을 게시하지 않기 위해 xxx에 고정되어 있습니다). 이 코드는 서버에 업로드 할 때 잘 작동하며 전자 메일을 완벽하게 보냅니다.메일을 보내는 것은 서버에서 작동하지만 내 로컬 컴퓨터에서는 작동하지 않습니다.

[SocketException이 (0x274d) : 내가 비주얼 스튜디오에서 내 컴퓨터에서 로컬로 테스트 할 때

 MailMessage msg = new MailMessage(); 
     msg.From = new MailAddress(fromEmailAddress_); 
     msg.To.Add(new MailAddress(toEmailAddress_)); 

     msg.Subject = subject_; 
     msg.Body = body_; 
     msg.IsBodyHtml = true; 
     msg.Priority = MailPriority.High; 

     NetworkCredential basicAuthenticationInfo = new System.Net.NetworkCredential("[email protected]", "password"); 
     try 
     { 
      SmtpClient c = new SmtpClient("mail.xxx.org"); 
      c.UseDefaultCredentials = false; 
      c.Credentials = basicAuthenticationInfo; 
      c.Send(msg); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
      Console.Write(ex.Message.ToString()); 
     } 

하지만, 난 오류가 대상 컴퓨터가 적극적으로 66.226를 거부했기 때문에 연결하지 못했습니다. System.Net.Sockets.Socket.DoConnect (EndPoint endPointSnapshot, SocketAddress socketAddress) +239 System.Net.Sockets.Socket.InternalConnect (EndPoint remoteEP) +35 System.Net.ServicePoint.ConnectSocketInternal (Boolean connectFailure , 소켓 s4, 소켓 s6, 소켓 & 소켓, IPAddress 01 System.Net.ServicePoint.GetConnection (PooledStream PooledStream, 오브젝트 소유자 [없음 원격 서버에 연결은 WebException이, 224

가개 주소 ConnectSocketState 상태 IAsyncResult를 asyncResult, INT32 타임 아웃 예외 & 예외) 부울 비동기,하여 IPAddress & 주소, 소켓 & abortSocket, 소켓 & abortSocket6, INT32 시간 제한) 5420699 System.Net.PooledStream.Activate (owningObject, 부울 비동기, INT32 시간 제한, GeneralAsyncDelegate asyncCallback) 202 System.Net.PooledStream 객체. 활성화 (Object owningObject, GeneralAsyncDelegate asyncCallback) +21 System.Net.ConnectionPool.GetConnection (Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout) +332 System.Net.Mail.SmtpConnection.GetConnection (String host, Int32 port) +160 System.Net.Mail.SmtpTransport.GetConnection 문자열 호스트, INT32 포트)이 단지 자신의 호스팅 환경에서 메일을 수락하도록 공급자가 아마도 자신의 메일 서버를 방화벽있다

답변

2

이 작업을 실행하기 위해 가장 먼저해야 할 일은 오류 메시지가 말한 것처럼 대상 컴퓨터가 실제로 연결을 거부하는지 확인하는 것입니다. 해당 IP 주소의 포트 25에 연결할 수 있으므로 오류 메시지가 잘못 표시 될 수 있습니다.다음은 연결 실패의 모든 원인은 다음과 같습니다 몇 가지 문제가있을

  • 코드에
  • 당신이
  • 당신이 이상한 프로그램에서 아웃 바운드 메일을 방지 로컬 방화벽이 사용하고있는 라이브러리의 일부 문제가있다
  • 일부 중간 네트워크를 차단하는 일
  • 메일 서버의 ISP 요에서 SMTP 연결을 차단하고 자신의 서버를 제외하고 아웃 바운드 SMTP 연결을 허용하지 않습니다
  • 당신의 ISP UR 네트워크
  • 는 메일 서버는 정말 당신이 더 많은 세부 사항, 다운로드를 얻을 Wireshark를 설치하려면 차단 목록

에있어 아마도 때문에, 당신을 거부한다. 네트워크 용 디버거와 같습니다. 시스템과 대상 네트워크 사이에서 캡처를 시작한 다음 코드를 실행하십시오. 캡쳐 된 패킷을 해석하는 데는 약간의 경험이 필요하므로 여기에 더 많은 데이터를 자유롭게 게시 할 수 있습니다.

0

작동하지 왜의 159 개

제안.

로컬 메일 서버를 로컬에서 테스트 할 때 로컬 서버를 사용하도록 변경하십시오.

+0

windows xp에는 로컬 테스트에 사용할 수있는 메일 서버 유형이 있습니까? – leora

+0

메일 클라이언트에 구성된 ISP의 서버를 사용하십시오. – caf

1

릴레이 제한으로 인해 허용 된 IP 집합 외부에서 메일을 보낼 수 없게 될 가능성이 높습니다. SMTP 서버가 웹/응용 프로그램 서버에 구성된 경우 127.0.0.1을 통해서만 메일을 보낼 수 있도록 설정되어있을 것입니다.

IIS 관리자를 통해 로컬 SMTP 서버를 구성 할 수 있습니다. 이 경로를 따라 가면 포트 25가 로컬 컴퓨터에 열려 있는지 확인하십시오. 안티 바이러스 유형 소프트웨어가이 포트를 차단/모니터하는 경우가 종종 있으며 전자 메일 배달과 관련이 있습니다.

0

당신의 항 바이러스가 미치고 있는지보기 위하여, 나는이 문제를 mcafee를 달리는 사람들과 몇 시간 보았다.

희망이 도움이됩니다.

1

코드에서 포트 번호를 사용하지 않는 것 같습니다. 이 줄을 사용하면 메일도 로컬에서 사라져야합니다.

smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 
    smtp.Timeout = 60000; 
    smtp.Port = 25; 

내 시스템에서 작동됩니다. 나는 그것이 당신의 로컬 시스템에서도 작동하기를 바랍니다.

관련 문제