Asp.net core 使用asp net内核发送电子邮件

Asp.net core 使用asp net内核发送电子邮件,asp.net-core,Asp.net Core,我想实现的功能,在我的网页上有一个区域,用户可以输入他们的电子邮件与一个问题,并自动电子邮件到达某个电子邮件帐户(我的)。到目前为止,它总是来自同一个人,而不是来自将您的电子邮件放入该字段的人 [HttpPost] public async Task<IActionResult> EnviarMail(MandarMailViewModel model) { if (ModelState.IsValid)

我想实现的功能,在我的网页上有一个区域,用户可以输入他们的电子邮件与一个问题,并自动电子邮件到达某个电子邮件帐户(我的)。到目前为止,它总是来自同一个人,而不是来自将您的电子邮件放入该字段的人


[HttpPost]
        public async Task<IActionResult> EnviarMail(MandarMailViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Email email = new Email()
                    {
                        From = model.From,
                        Subject = model.Subject,
                        Body = model.Body
                    };

                    MailMessage mm = new MailMessage();
                    mm.To.Add(my email);
                    mm.Subject = email.Subject;
                    mm.Body = email.Body;
                    mm.IsBodyHtml = false;
                    mm.From = new MailAddress(email.From);

                    SmtpClient smtp = new SmtpClient("smtp.gmail.com");
                    smtp.Port = 587;
                    smtp.UseDefaultCredentials = false;
                    smtp.EnableSsl = true;
                    smtp.Credentials = new System.Net.NetworkCredential(my email, my password);

                    await smtp.SendMailAsync(mm);

                return RedirectToAction("EnvioExitoso");
                }catch(Exception error)
                {
                    ViewBag["Error"] = error.Message;
                }
            }

            return View(model);
        }




[HttpPost]
公共异步任务环境(MandarMailViewModel模型)
{
if(ModelState.IsValid)
{
尝试
{
电子邮件=新电子邮件()
{
From=模型。From,
Subject=model.Subject,
Body=model.Body
};
MailMessage mm=新邮件();
添加(我的电子邮件);
mm.Subject=email.Subject;
mm.Body=email.Body;
mm.IsBodyHtml=false;
mm.From=新邮件地址(email.From);
SmtpClient smtp=新的SmtpClient(“smtp.gmail.com”);
smtp.Port=587;
smtp.UseDefaultCredentials=false;
smtp.EnableSsl=true;
smtp.Credentials=新系统.Net.NetworkCredential(我的电子邮件、密码);
等待smtp.SendMailAsync(mm);
返回重定向到操作(“EnvioExitoso”);
}捕获(异常错误)
{
ViewBag[“Error”]=错误消息;
}
}
返回视图(模型);
}

这是指定发送电子邮件的帐户的行:

smtp.Credentials=new System.Net.NetworkCredential(我的电子邮件、密码);
如果你想让发件人的电子邮件地址成为访问者的地址,你必须要求他们输入密码并验证他们的帐户,但不管大多数人不会给出他们的密码,这不是你应该做的

以下是推荐的方法:

  • 创建一个仅用于从您的页面发送电子邮件的电子邮件帐户,例如。noreply@domain.com
  • 创建另一封电子邮件以接收来自页面的电子邮件,例如。support@domian.com
  • 将用户的电子邮件地址保留在抄送中,这样他们就可以收到电子邮件的副本,并确信您也收到了该邮件,而在另一端,您也可以在抄送中看到该地址

您是否尝试调试
mm.From=新邮件地址(email.From)
中的地址?