mvc app;使用Gmail发送电子邮件不会产生SmtpFailedRecipientException或SmtpFailedRecipientsException

时间:2017-01-09 04:54:44

标签: c# model-view-controller gmail asp.net-identity-2 smtpclient

我有一个使用gmail发送电子邮件的mvc应用程序。

我的代码:

成功发送电子邮件,提供:

  1. 我使用正确的帐户身份验证(用户名,pw)
  2. 我将电子邮件发送到有效的现有电子邮件帐户
  3. 如果我不使用我的有效gmail用户名pw,我会收到异常。 (这很好)。

    我的问题和我的问题是: 当我的代码向无效的电子邮件帐户发送电子邮件时,我不会得到任何类型的例外!没有SmtpFailedRecipientException,没有SmtpFailedRecipientsException;缥缈。

    为什么会这样?我需要更改哪些内容,以便在将电子邮件发送到无效的,不存在的帐户时收到异常?

    我的MVC应用中的代码:

    在Identity.cs中

    public class EmailService : IIdentityMessageService
    {
        public Task SendAsync(IdentityMessage message)
        {
            try
            {
                System.Web.Helpers.WebMail.Send(message.Destination, message.Subject, message.Body, "DoNotReply@ourcompany.com");
            }
            catch (Exception e)
            {
                throw;  //Add msg here; set break point when testing; whatever
            }
            return Task.FromResult(0);
        }
    }
    

    在AuthConfig.cs中,我有gmail帐户设置,我们知道这些设置。

            System.Web.Helpers.WebMail.SmtpServer = "smtp.gmail.com";
            WebMail.EnableSsl = true;
            WebMail.UserName = "OurUserName";
            WebMail.Password = "OurPW";
            WebMail.From = "DoNotReply@OurCompany.com";
            WebMail.SmtpPort = 587;
    

    在我的控制器中,我有这个部分代码:

    public async Task<ActionResult> Register(RegisterViewModel model)
    {
        try
        {
            await UserManager.SendEmailAsync(user.Id, emailSubject, emailBody);
        } 
        catch (Exception e)  
        {
        }
    }
    

    控制器首先运行。我使用asp.identity2(UserManager)和SendEmailAsync调用Identity.cs中的SendAsync。

    感谢您的建议。

1 个答案:

答案 0 :(得分:2)

Gmail不会让您知道哪些电子邮件地址无法向其发送电子邮件,以避免机器人查找有效的电子邮件地址。稍后您应该收到一封电子邮件,其中包含有关电子邮件地址失败的详细信息。