问题描述
所以我试图在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软件包。
解决方法
您的代码正在从MailAddress
命名空间中提取System.Net
。您需要改用SendGrid.Helper.Mail
命名空间来解决这个问题。
或者您应该在传递MailAddress
时创建Address
;
最简单的方法有很多种;
myMessage.From = new SendGrid.Helpers.Mail.Address("mymail@gmail.com","Joe S.");
在查看SendGrid文档时,您可能还需要考虑使用EmailAddress
而不是MailAddress
或Address
。
https://sendgrid.com/docs/for-developers/sending-email/v3-csharp-code-example/
var to = new EmailAddress("test@example.com","Example User");