用户在mvc中登录时如何生成电子邮件

时间:2017-03-28 06:33:39

标签: sql-server asp.net-mvc asp.net-mvc-4 metadata

我正在开发一个项目,因为我需要向登录的用户发送电子邮件

控制器:

    [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;
    }

这是我发送电子邮件的控制器部分

我有两个名为MaterUser的表,通过create方法给出的值保存在数据库中。但是在sendmail方法中,我收到了错误:

  

对象引用未设置为对象的实例&#34;在以下行中。

     

mail.From = new MailAddress(ConfigurationManager.AppSettings [&#34; From&#34;]。ToString());

MailMessageMailAddress取自元数据。但它显示这样的错误?

任何人都可以帮我解决问题吗?

1 个答案:

答案 0 :(得分:0)

你确定吗

<add key="Form" value="yourvalue"/>

此设置在您的配置文件中。