2010-04-01 5 views
1

을 사용하여 네트워크에서 smtp 전자 메일을 보낼 수 없습니다. 여기 내 코드가 있습니다. 내 사용자가 관리자 인 내 가정에서 제대로 작동하며 케이블 네트워크를 통해 인터넷에 연결되어 있습니다. 하지만 문제는 직장에서이 코드를 시도해도 작동하지 않는다는 것입니다. 동일한 네트워크에있는 다른 컴퓨터에서 "원격 서버에 연결할 수 없습니다": 는 "A 소켓 작업을 연결할 수없는 네트워크 209.xxx.xx.52에 시도했다 : 25"C#, asp.net 웹 사이트

내가 확인 오류가 표시 우리의 네트워크 관리자와 함께, 그는 모든 메일 포트가 열려 있다고 확신합니다 [25,110 및 기타 gmail 용 포트].

그런 다음 관리자 권한으로 로그인했지만 조금 개선되었지만 오류는 표시되지 않았지만 실제 이메일은 수신되지 않았습니다.

가 있다는 점 유의 하시길 바랍니다 코드는 비주얼 스튜디오 2005 년과 2008 년

이 어떤 제안은 많이 주시면 감사합니다, 개발 환경에서 테스트되었습니다. 사전에 감사

try 
    { 
     MailMessage mail_message = new MailMessage("[email protected]", txtToEmail.Text, txtSubject.Text, txtBody.Text); 
     SmtpClient mail_client = new SmtpClient("SMTP.y7mail.com"); 
     NetworkCredential Authentic = new NetworkCredential("[email protected]", "xxxxx"); 
     mail_client.UseDefaultCredentials = true; 
     mail_client.Credentials = Authentic; 
     mail_message.IsBodyHtml = true; 
     mail_message.Priority = MailPriority.High; 
     try 
     { 
      mail_client.Send(mail_message); 
      lblStatus.Text = "Mail Sent Successfully"; 
     } 
     catch (Exception ex) 
     { 
      System.Diagnostics.Debug.WriteLine(ex.Message); 
      lblStatus.Text = "Mail Sending Failed\r\n" + ex.Message; 
     } 
    } 
    catch (Exception ex) 
    { 
     lblStatus.Text = "Mail Sending Failed\r\n" + ex.Message; 
    } 

답변

1

은 Gmail 서버

private void SendEmail(string from, string to, string subject, string body) 
    { 
     MailMessage mail = new MailMessage(new MailAddress(from), new MailAddress(to)); 

     mail.Subject = subject; 
     mail.Body = body; 

     SmtpClient smtpMail = new SmtpClient("smtp.gmail.com"); 
     smtpMail.Port = 587; 
     smtpMail.EnableSsl = true; 
     smtpMail.Credentials = new NetworkCredential("[email protected]", "xxx"); 
     // and then send the mail 
     smtpMail.Send(mail); 
    } 
+0

감사합니다. 그것은 나에게도 효과가 있었다. Gmail뿐만 아니라 y7mail도 마찬가지입니다! 이 포트 587에 대한 전문성이 있습니까? – Kaysar

+0

작동하게 만든 주요 부분 : MailMessage mail_message = new MailMessage ("[email protected]", txtToEmail.Text, txtSubject.Text, txtMailBody.Text); SmtpClient mail_client = 새 SmtpClient ("SMTP.y7mail.com", 587); NetworkCredential Authentic = 새 NetworkCredential ("[email protected]", "xxx"); mail_client.UseDefaultCredentials = true; mail_client.Credentials = Authentic; – Kaysar

+0

다행 이었기 때문에 기쁩니다. 포트 587b는 ESMTP (RFC2476)로 전자 메일을 제출하기위한 표준 포트입니다. –

1

false로 UseDefaultCredentials을 설정하십시오.

0
private void SendEmail(string from, string to, string subject, string body) 
    { 
     MailMessage mail = new MailMessage(new MailAddress(from), new MailAddress(to)); 

     mail.Subject = subject; 
     mail.Body = body; 

     SmtpClient smtpMail = new SmtpClient("smtp.gmail.com"); 
     smtpMail.Port = 587; 
     smtpMail.EnableSsl = true; 
     smtpMail.Credentials = new NetworkCredential("[email protected]", "xxx"); 
     // and then send the mail 
     smtpMail.Send(mail); 
    } 

에 저와 회담을 작동하는 몇 가지 예제 코드 이것은 System.Exception 문제점에 대한 최상의 대답입니다. 완전히 검증되면 네트워크 자격 증명에 사용자 이름과 암호를 제공해야합니다. 또한이 솔루션을 다른 사이트에 제공하십시오.