"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.
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.