ASP.NET MVC UserManager.SendEmailAsync不发送电子邮件

时间:2017-09-05 15:01:59

标签: c# asp.net .net email model-view-controller

我的AdminController.cs中的代码

await UserManager.SendEmailAsync(
    user.Id, "Confirm your account", 
    "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"
);

似乎没有尝试发送电子邮件。

IdentityConfig.cs

public Task SendAsync(IdentityMessage message)
    {            

        // Plug in your email service here to send an email.
        SmtpClient client = new SmtpClient();
        client.UseDefaultCredentials = true;

        MailMessage mail = new MailMessage("noreply@website.com", message.Destination);
        mail.Subject = message.Subject;
        mail.Body = message.Body;
        mail.IsBodyHtml = true;

        return client.SendMailAsync(mail);            
    }

我在我的应用程序的其他位置使用以下代码,它可以正常工作。

IdentityMessage emailMessage = new IdentityMessage
  {
    Destination = recipient.Email,
    Subject = "You have a new message - " + message.Subject,
    Body = "<p>Message from: " + recipient.UserName + "</p>" + message.Body
  };
  EmailService emailService = new EmailService();
  emailService.SendAsync(emailMessage);

我见过几个类似的问题但据我所知,我的设置应该有效。

任何建议都非常感谢。

谢谢!

2 个答案:

答案 0 :(得分:1)

找到解决方案,问题实际上并不是我的想法。

我已经从开箱即用的电子邮件选项中更改了默认用户名,帐户控制器中有几个地方根据用户名查找用户ID但是通过电子邮件搜索,所以基本上是使用用户名进行搜索对于一封电子邮件,它开箱即用,但是因为我做了改动,所以它被打破了。

例如在&#34; ForgotPassword&#34;有以下查找:

UserManager.FindByEmailAsync(model.Email);

以前使用的是model.Username,导致我没有发送电子邮件。

答案 1 :(得分:0)

如果没有&#39; async await&#39; ,则不会显示错误

public async Task<ActionResult> EmailMethod()
        {
            IdentityMessage emailMessage = new IdentityMessage
            {
                Destination = recipient.Email,
                Subject = "You have a new message - " + message.Subject,
                Body = "<p>Message from: " + recipient.UserName + "</p>" + message.Body
            };
            EmailService emailService = new EmailService();
            await emailService.SendAsync(emailMessage);
            return View();
        }

发送电子邮件时会发生什么样的错误?