Configure email settings in appsettings web.config

Setting up email in web.config - but email is not sent!

<appSettings> <add key="webpages:Version" value="1.0.0.0" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> <add key="smtpServer" value="smtp.live.com" /> <add key="EnableSsl" value = "true"/> <add key="smtpPort" value="587" /> <add key="smtpUser" value=" MyEmail@live.co.uk " /> <add key="smtpPass" value="mypasswordgoeshere" /> <add key="adminEmail" value=" no-reply@no-reply.com " /> </appSettings> 

I use the following class

 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Net.Mail; using System.Net; using System.Configuration; namespace MVCcars.Utils { public static class MailClient { private static readonly SmtpClient Client; static MailClient() { Client = new SmtpClient { Host = ConfigurationManager.AppSettings["SmtpServer"], Port = Convert.ToInt32( ConfigurationManager.AppSettings["SmtpPort"]), DeliveryMethod = SmtpDeliveryMethod.Network }; Client.UseDefaultCredentials = false; Client.Credentials = new NetworkCredential( ConfigurationManager.AppSettings["SmtpUser"], ConfigurationManager.AppSettings["SmtpPass"]); } private static bool SendMessage(string from, string to, string subject, string body) { MailMessage mm = null; bool isSent = false; try { // Create our message mm = new MailMessage(from, to, subject, body); mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; // Send it Client.Send(mm); isSent = true; } // Catch any errors, these should be logged and // dealt with later catch (Exception ex) { // If you wish to log email errors, // add it here... var exMsg = ex.Message; } finally { mm.Dispose(); } return isSent; } public static bool SendWelcome(string email) { string body = "Put welcome email content here..."; return SendMessage( ConfigurationManager.AppSettings["adminEmail"], email, "Welcome message", body); } } } 

This is the account controller:

 [HttpPost] public ActionResult Register(RegisterModel model) { if (ModelState.IsValid) { // Attempt to register the user MembershipCreateStatus createStatus; Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); if (createStatus == MembershipCreateStatus.Success) { // Send welcome email MailClient.SendWelcome(model.Email); FormsAuthentication.SetAuthCookie( model.UserName, false /* createPersistentCookie */); return RedirectToAction("create", "Customer"); } else { ModelState.AddModelError("", ErrorCodeToString(createStatus)); } } // If we got this far, something failed, // redisplay form return View(model); } 

Are application settings in web.config right for enableSsl? any advice welcome

+6
source share
2 answers

An even simpler way to work with SmtpClient in .NET is to use the system.net configuration settings. This will allow you to set default values ​​for any SmtpClient created without having to write code to set all the properties. This way you can easily change the whole installation without changing the code.

  <system.net> <mailSettings> <smtp from=" no-reply@no-reply.com "> <network host="smtp.live.com" password="mypasswordgoeshere" port="587" userName=" MyEmail@live.co.uk " enableSsl="true"/> </smtp> </mailSettings> </system.net> 

And then in code

  System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient(); smtp.Send(mailMessage); 

EDIT Here is the original code that I posted below:

 static MailClient() { Client = new SmtpClient { Host = ConfigurationManager.AppSettings["SmtpServer"], Port = Convert.ToInt32(ConfigurationManager.AppSettings["SmtpPort"]), DeliveryMethod = SmtpDeliveryMethod.Network, EnableSsl = bool.Parse(ConfigurationManager.AppSettings["EnableSsl"]) }; ..... } 
+20
source

In addition to Nick Bork's answer above, you may need to make some changes to your asp page and use

MailSettingsGroup

. I hope this link is useful. How to use Not-so-new MailSettingsSectionGroup

+2
source

Source: https://habr.com/ru/post/912459/


All Articles