使用sendgrid不会收到任何电子邮件,也不会收到任何错误消息

本文关键字:任何 错误 消息 电子邮件 使用 sendgrid | 更新日期: 2023-09-27 18:26:21

我有一个新的MVC项目,在本文之后,我将在注册sendgrid时发送邮件。http://www.asp.net/mvc/overview/security/create-an-aspnet-mvc-5-web-app-with-email-confirmation-and-password-reset

在项目的根目录中创建了一个新的文件夹"manager"。在该文件夹中,我创建了一个新文件EmailService.cs,其中包含以下代码。

public class EmailService : IIdentityMessageService
{
   public async Task SendAsync(IdentityMessage message)
   {
      await configSendGridasync(message);
   }
   // Use NuGet to install SendGrid (Basic C# client lib) 
   private async Task configSendGridasync(IdentityMessage message)
   {
      var myMessage = new SendGridMessage();
      myMessage.AddTo(message.Destination);
      myMessage.From = new System.Net.Mail.MailAddress(
                          "mymail@gmail.com", "Joe S.");
      myMessage.Subject = message.Subject;
      myMessage.Text = message.Body;
      myMessage.Html = message.Body;
      var credentials = new NetworkCredential(
                 ConfigurationManager.AppSettings["mailAccount"],
                 ConfigurationManager.AppSettings["mailPassword"]
                 );
      // Create a Web transport for sending email.
      var transportWeb = new Web(credentials);
      // Send the email.
      if (transportWeb != null)
      {
         await transportWeb.DeliverAsync(myMessage);
      }
      else
      {
         Trace.TraceError("Failed to create Web transport.");
         await Task.FromResult(0);
      }
   }
}

将其添加到web.config中,并使用正确的值

  <add key="mailAccount" value="xyz" />
  <add key="mailPassword" value="password" />

并用这个修改了我的注册控制器

        string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
        var callbackUrl = Url.Action("ConfirmEmail", "Account", 
           new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
        await UserManager.SendEmailAsync(user.Id, 
           "Confirm your account", "Please confirm your account by clicking <a href='"" 
           + callbackUrl + "'">here</a>");

我什么也没做。我可以注册。没有错误,也没有电子邮件。当项目启动时,我需要添加EmailService吗?为什么?

使用sendgrid不会收到任何电子邮件,也不会收到任何错误消息

将我的代码添加到identityconfig中,现在它可以工作了。

我遇到了同样的问题。事实证明,我的问题是,在使用SendGrid.Helpers.Mail.MailHelper类生成消息时,我为纯文本和html内容传递了空字符串。一旦我添加了这些,消息就成功发送了。

我以前没有使用过Sendgrid,但看起来您缺少了他们在第14行列出的API密钥:

var credentials = new NetworkCredential(api_user, api_key);

对于那些可能正在竭尽全力发送第一封SendGrid电子邮件的人,这里简要介绍一下我的经历:

我可以通过.NET SmtpClient发送电子邮件,而不会收到任何错误消息。然而,这些电子邮件似乎在SendGrid内部永久丢失,因为它们既没有发送,也没有出现在SendGrid面板上的"今天发送的电子邮件"计数器中。我没有看到任何迹象表明我的帐户正在被配置。然而,当我第二天再次尝试时,我的电子邮件收到了。