"L'hôte SMTP n'a pas été spécifié."- mais il est spécifié?

je suis un peu perplexe ici - je reçois l'erreur suivante:

l'hôte SMTP n'a pas été spécifié.

même si mon code semble correct (d'après ce que je peux voir).

je peux le faire manuellement en incluant tous les détails à l'intérieur du contrôleur, par exemple

SmtpClient smtpClient = new SmtpClient("smtp.gmail.com");
smtpClient.Port = 587;
... etc

Mais je ne devrais pas avoir à le faire, car je veux utiliser les détails à l'intérieur mailSettings (ce qui le rend réutilisable pour divers contrôleur.)

mailSettings dans mon Web.Config fichier:

<system.net>
   <mailSettings>
     <smtp from="example@gmail.com" deliveryMethod="Network" >
       <network host="smtp.gmail.com" defaultCredentials="true" 
                port="587" enableSsl="true" userName="example@gmail.com"
                password="example"/>
     </smtp>
   </mailSettings>
</system.net>

Mon action de Contrôleur:

 [HttpPost]
 public ActionResult SubmitFeature(FormData formData)
 {
     SmtpClient smtpClient = new SmtpClient();

     MailMessage mail = new MailMessage();
     mail.To.Add(new MailAddress("example@gmail.com"));
     mail.Body = "Test";

     smtpClient.Send(mail);

     return View("Example");
 }

y a-t-il quelque chose que je manque qui pourrait être à l'origine de cela? Je n'ai pas fait d'autres réglages sur le Web.Config, ils sont tels quels lors de la mise en place d'un nouveau projet MVC5.

21
demandé sur user2381114 2014-01-19 20:46:43

2 réponses

dans le cadre d'un projet clean MVC, Je ne suis pas en mesure de reproduire votre problème. À la suite de la ScottGu blog ici, j'ai pu obtenir un email gmail envoyé sans problème (VS 2013, .NET 4.5.1, MVC 5). Remarque les <system.net> element est un élément de niveau supérieur et non imbriqué à l'intérieur de AppSettings ou <system.web>.

Important

Il y a un peu de web.fichiers de configuration dans votre solution, assurez-vous que le mailSettings est insérée dans le réseau racine.config (et non l'un est situé dans le dossier Vues)

Web.Config

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="myEmail@gmail.com">
        <network host="smtp.gmail.com" 
                 port="587" 
                 enableSsl="true" 
                 userName="myEmail@gmail.com" 
                 password="SuperSecretPwd" 
                 defaultCredentials="false" /> <!--This must be false on Gmail-->
      </smtp>
    </mailSettings>
  </system.net>
</configuration>

contrôleur

var smtpClient = new SmtpClient();
var msg = new MailMessage();
msg.To.Add("MyOtherAddress@yahoo.com");
msg.Subject = "Test";
msg.Body = "This is just a test email";
smtpClient.Send(msg);

il n'est pas clair si certains des attributs supplémentaires que vous avez inclus causent des problèmes (pensé qu'ils ne devraient pas) tels que la méthode de livraison. En outre, y a-t-il un paramètre permettant L'accès SMTP ou est-ce juste pour la livraison IMAP/POP?

Si vous pouvez tester avec succès dans un endroit propre projet, alors ce serait un Web.problème de transformation de la configuration ou autre(s) paramètre (s) dans votre projet qui supplante le web.paramètres de configuration que vous avez en place.

24
répondu Tommy 2015-09-23 19:34:54

la solution a été mentionnée dans le Chat, mais jamais édité dans la réponse ci-dessus.

assurez-vous d'effectuer ces réglages dans le web.config Niveau De Racine et pas dans le dossier Vues.

@Tommy:...cela ressemble le web.config à partir de votre point de Vue dossier et non pas le web.config à la racine de l'application

5
répondu Malachi 2015-07-06 00:40:38