【发布时间】:2023-04-04 06:11:01
【问题描述】:
我正在使用此tutorial 发送帐户确认电子邮件,但我没有收到任何电子邮件或任何错误代码:
AuthMessageSenderOptions.cs
public class AuthMessageSenderOptions
{
public string SendGridUser { get; set; }
public string SendGridKey { get; set; }
}
appSettings.json
"AuthMessageSenderOptions": {
"SendGridUser": "MyUserName",
"SendGridKey": "SG.Xa................ MyKey"
},
EmailSender.cs
public class EmailSender : IEmailSender
{
public EmailSender(IOptions<AuthMessageSenderOptions> optionsAccessor)
{
Options = optionsAccessor.Value;
}
public AuthMessageSenderOptions Options { get; } //set only via Secret Manager
public Task SendEmailAsync(string email, string subject, string message)
{
return Execute(Options.SendGridKey, subject, message, email);
}
public Task Execute(string apiKey, string subject, string message, string email)
{
var client = new SendGridClient(apiKey);
var msg = new SendGridMessage()
{
From = new EmailAddress("info@reloadrs.com", Options.SendGridUser),
Subject = subject,
PlainTextContent = message,
HtmlContent = message
};
msg.AddTo(new EmailAddress(email));
// Disable click tracking.
// See https://sendgrid.com/docs/User_Guide/Settings/tracking.html
msg.SetClickTracking(false, false);
return client.SendEmailAsync(msg);
}
}
Register.cs
var result = await _userManager.CreateAsync(user, Input.Password);
if (result.Succeeded)
{
_logger.LogInformation("User created a new account with password.");
var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
var confirmationLink = Url.Page(nameof(ConfirmEmail), "Account",
new { code, email = user.Email }, Request.Scheme);
await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
$"Please confirm your account by" +
$" <a href='{HtmlEncoder.Default.Encode(confirmationLink)}'>clicking here</a>.");
}
我也试过了,不仅在本地发布,而且还是一样
【问题讨论】:
-
在您的最后一段代码中,您正在执行
await _emailSender.SendEmailAsync(),但您没有捕获响应。如果将该结果分配给类似于sendgrid.com/docs/for-developers/sending-email/… 示例的变量,然后调试和检查它会发生什么?
标签: c# asp.net-core sendgrid