Je suis un peu dérouté ici - je reçois l'erreur suivante:
L'hôte SMTP n'a pas été spécifié.
Même si mon code semble être 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 à faire cela, car je veux utiliser les détails à l'intérieur de mailSettings
(le rendant réutilisable pour différents contrôleurs différents).
mailSettings
dans mon Web.Config
fichier:
<system.net>
<mailSettings>
<smtp from="[email protected]" deliveryMethod="Network" >
<network Host="smtp.gmail.com" defaultCredentials="true"
port="587" enableSsl="true" userName="[email protected]"
password="example"/>
</smtp>
</mailSettings>
</system.net>
Action Mon contrôleur:
[HttpPost]
public ActionResult SubmitFeature(FormData formData)
{
SmtpClient smtpClient = new SmtpClient();
MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress("[email protected]"));
mail.Body = "Test";
smtpClient.Send(mail);
return View("Example");
}
Y a-t-il quelque chose qui me manque qui pourrait être à l'origine de cela? Je n'ai pas dérangé avec d'autres paramètres dans Web.Config, ils sont tels quels lors de la configuration d'un nouveau projet MVC5.
Dans un projet MVC propre, je ne peux pas répliquer votre problème. Après le article de blog ScottGu ici , j'ai pu obtenir un e-mail envoyé par Gmail sans problème (VS 2013, .NET 4.5.1, MVC 5). Notez que l'élément <system.net>
Est un élément de niveau supérieur et n'est pas imbriqué à l'intérieur de AppSettings
ou <system.web>
.
Important
Il y a quelques fichiers web.config dans votre solution, assurez-vous que mailSettings
est inséré dans le niveau racine web.config (et non celui situé dans le dossier Views)
Web.Config
<configuration>
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network Host="smtp.gmail.com"
port="587"
enableSsl="true"
userName="[email protected]"
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("[email protected]");
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és qu'ils ne devraient pas) tels que la méthode de livraison. Existe-t-il également un paramètre pour autoriser l'accès SMTP ou est-ce uniquement pour la livraison IMAP/POP?
Si vous pouvez tester et réussir dans un projet propre, cela indiquerait soit un problème de transformation web.config, soit un ou plusieurs autres paramètres de votre projet remplaçant les paramètres web.config que vous avez en place.
La solution a été mentionnée dans le Chat , mais n'a jamais été modifiée dans la réponse ci-dessus.
Assurez-vous de définir ces paramètres dans le web.config
du niveau racine et non dans le dossier Vues.