2012-10-25 1 views
3

J'essaie d'envoyer un courrier électronique dans une application console .NET. J'ai un serveur SMTP avec i.P. adresse X.X.X.X (assainie pour protéger l'innocent)..NET SMTP mail - erreur = commande helo rejetée besoin d'un nom d'hôte complet

Le serveur SMTP a été configuré (le relais a été configuré) pour autoriser l'envoi d'e-mails depuis le serveur hébergeant l'application de console .NET et envoyer cet e-mail au monde extérieur.

J'ai testé cela avec telnet depuis le serveur hébergeant l'application console. J'ai envoyé avec succès un email avec la console telnet du serveur hébergeant l'application de console en utilisant le I.P. du serveur SMTP. adresse. Aucune authentification n'est requise lors de l'utilisation de telnet. Je n'ai reçu aucune information d'identification de connexion.

Mais lorsque je tente de le faire dans l'application .NET, je reçois l'erreur suivante:

Syntaz error, command unrecognized. The server response was: : Helo command rejected: need fully-qualified hostname

Voici mon code:

string mailMessagetest = "test"; 
     string subjecttest = "test"; 
     List<string> recipienttest = new List<string>(); 
     recipienttest.Add("[email protected]"); 

     utility.SendMail(recipienttest, subjecttest, mailMessagetest); 

Voici la fonction SendMail:

 public static void SendMail(List<string> recipient, string subject, string message) 
    { 
     MailMessage mailMessage = new MailMessage(); 
     mailMessage.From = new MailAddress("[email protected]"); 

     foreach (string to in recipient) 
     { 
      mailMessage.To.Add(to); 
     } 

     mailMessage.Subject = subject; 
     mailMessage.Body = message; 

     SmtpClient client = new SmtpClient(); 
     client.Host = "X.X.X.X"; 
     client.Port = 25; 
     client.Send(mailMessage); 
    } 

Répondre

1

Créez un utilisateur avec mot de passe sur votre serveur SMTP, puis appliquez les paramètres suivants:

 smtp.UseDefaultCredentials = false; 
     smtp.Credentials = new NetworkCredential("user", "pass"); 
     smtp.DeliveryMethod = SmtpDeliveryMethod.Network; 
     smtp.Port = 25; 
     smtp.EnableSsl = true; // or false depending your server 
+0

Comment cela va-t-il aider? L'administrateur m'a donné la boîte sans aucune exigence d'autorisation. \ – richard

+0

alors définissez UseDefaultCredentials = true et supprimez la deuxième ligne et réessayez –

+0

Merci Mohsen. C'est ce que j'avais initialement essayé sans aucune chance. – richard

5

Modifiez le nom d'hôte d'une adresse IP en son nom, par ex. "smtp.provider.com" ou si c'est interne "mailserver.domain".

MISE À JOUR:

Essayez de lire ce system.net.mail.smtpclient fqdn required et ce the FQDN is not sent when you send a HELO or EHLO.

+0

J'ai essayé ça. J'ai utilisé ce que je pense être le fqdn. Je vérifierai demain si j'utilise le bon. – richard

+0

Je pense que vous avez raison sur le FQDN - essayez de lire les liens ci-dessus. –

+0

Le second lien semble être spécifique à .net 2.0. Si vous utilisez une version plus récente, vous n'avez pas besoin d'installer le correctif, mais vous devez appliquer la modification à app.config –

Questions connexes