我正在开发一个项目,因为我需要向登录的用户发送电子邮件
控制器:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include = "ID,BranchID,CreatedDate,FirstName,LastName,DOB,Gender,EmailID,MobileNo")] Master master)
{
if (ModelState.IsValid)
{
db.Masters.Add(master);
await db.SaveChangesAsync();
User u = new Models.User();
u.UserID = master.FirstName.Length > 4 ? agentMaster.FirstName.Substring(0, 4) : agentMaster.FirstName;
u.Password = u.UserID + "@123";
u.EmailID = agentMaster.EmailID;
u.Mobile = agentMaster.MobileNo;
u.CreatedDate = DateTime.Now;
u.Name = agentMaster.FirstName;
u.Createdby = agentMaster.FirstName;
u.EmailConfirmed = true;
u.PhoneNumberConfirmed = true;
u.ID = agentMaster.ID;
db.Users.Add(u);
await db.SaveChangesAsync();
sendMail(u.EmailID, master.FirstName, u.UserID, u.Password);
return RedirectToAction("Index");
}
return View(master);
}
public void sendMail(string EmailID, string FirstName, string UserID, string Password)
{
MailMessage mail = new MailMessage();
mail.To.Add(EmailID);
mail.From = new MailAddress(ConfigurationManager.AppSettings["From"].ToString());
mail.Subject = "User Registration";
string Body = PopulateBody(FirstName, UserID, Password);
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = ConfigurationManager.AppSettings["smtpHost"].ToString();
smtp.Port = Convert.ToInt16(ConfigurationManager.AppSettings["smtpPort"].ToString());
smtp.UseDefaultCredentials = false;
smtp.Credentials = new System.Net.NetworkCredential
(ConfigurationManager.AppSettings["MailUserName"].ToString(), ConfigurationManager.AppSettings["MailUserPwd"].ToString());// Enter seders User name and password
smtp.EnableSsl = true;
smtp.Send(mail);
}
private string PopulateBody(string FirstName, string UserID, string Password)
{
string body = string.Empty;
using (StreamReader reader = new StreamReader(Server.MapPath("~/Utilities/EmailTemplate.htm")))
{
body = reader.ReadToEnd();
}
body = body.Replace("{UserName}", FirstName);
body = body.Replace("{UserID}", UserID);
body = body.Replace("{Password}", Password);
return body;
}
这是我发送电子邮件的控制器部分
我有两个名为Mater
和User
的表,通过create方法给出的值保存在数据库中。但是在sendmail方法中,我收到了错误:
对象引用未设置为对象的实例&#34;在以下行中。
mail.From = new MailAddress(ConfigurationManager.AppSettings [&#34; From&#34;]。ToString());
MailMessage
和MailAddress
取自元数据。但它显示这样的错误?
任何人都可以帮我解决问题吗?
答案 0 :(得分:0)
你确定吗
<add key="Form" value="yourvalue"/>
此设置在您的配置文件中。