首页 > 解决方案 > 在 ASP.NET 中通过电子邮件恢复密码

问题描述

所以我试图在 ASP.NET Web 应用程序中实现密码恢复,但是出了点问题。我正在使用此代码-

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 MailAddress(
                                "mymail@gmail.com", "Joe S.");
            myMessage.Subject = message.Subject;
            myMessage.PlainTextContent = message.Body;
            myMessage.HtmlContent = 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);
            }
        }
    }

myMessage.From = new MailAddress(
                                    "mymail@gmail.com", "Joe S.");

给出错误cs0029 无法将类型 system.Net.MailAdress 隐式转换为 SendGrid.Helpers.Mail.Adress

此外,var transportWeb = new Web(credentials);未找到在线 Web。

有谁知道出了什么问题?SendGrid Nuget 包已安装。

标签: asp.netasp.net-mvcasp.net-core

解决方案


您的代码正在MailAddressSystem.Net命名空间中提取。您需要从SendGrid.Helper.Mail命名空间解决此问题。

或者你正在创造MailAddress你应该通过的时候Address

有很多方法可以实现这一点,最简单的是;

myMessage.From = new SendGrid.Helpers.Mail.Address("mymail@gmail.com", "Joe S.");

查看 SendGrid 文档,您可能还想考虑使用EmailAddress代替MailAddressor Address

https://sendgrid.com/docs/for-developers/sending-email/v3-csharp-code-example/

var to = new EmailAddress("test@example.com", "Example User");

推荐阅读