2010-04-01 7 views
1

J'ai mon code ici, il fonctionne très bien chez moi, où mon utilisateur est administrateur, et je suis connecté à Internet via un réseau câblé. Mais, le problème est que lorsque j'essaye ce code depuis mon lieu de travail, cela ne fonctionne pas. Indique l'erreur: « Impossible de se connecter au serveur distant » A partir d'une autre machine dans le même réseau: « Une opération a été tentée sur un réseau injoignable 209.xxx.xx.52: 25 »Impossible d'envoyer un courrier électronique SMTP à partir du réseau en utilisant C#, site Web asp.net

J'ai vérifié avec notre administrateur réseau, et il m'a assuré que tous les ports de messagerie sont ouverts [25,110, et d'autres ports pour Gmail].

Ensuite, je me suis connecté avec le privilège administratif, il y avait un peu d'amélioration, il n'y avait pas d'erreur, mais l'email n'a jamais été reçu.

S'il vous plaît noter que, le code a été testé à partir de l'environnement de développement, Visual Studio 2005 et 2008.

Toute suggestion sera très appréciée. Merci à l'avance

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; 
    } 

Répondre

1

Voici quelques exemples de code qui fonctionne pour moi et parle à un serveur 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

Merci. Cela a fonctionné pour moi aussi. Non seulement pour Gmail, mais pour y7mail aussi! Y at-il une spécialité à propos de ce port 587? – Kaysar

+0

Partie principale du code qui l'a fait fonctionner: MailMessage mail_message = new MailMessage ("[email protected]", txtToEmail.Text, txtSubject.Text, txtMailBody.Text); SmtpClient mail_client = nouveau SmtpClient ("SMTP.y7mail.com", 587); NetworkCredential Authentic = new NetworkCredential ("[email protected]", "xxx"); mail_client.UseDefaultCredentials = true; mail_client.Credentials = Authentique; – Kaysar

+0

Heureux que ça a marché. Le port 587b est le port standard pour la soumission d'e-mails avec ESMTP (RFC2476). –

1

Essayez le réglage UseDefaultCredentials à false.

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); 
    } 

C'est la meilleure réponse pour le problème System.Exception. Totalement vérifié, vous devez fournir un nom d'utilisateur et un mot de passe aux informations d'identification du réseau. Essayez également de donner cette solution à d'autres sites.

Questions connexes