У меня проблема с подтверждением регистрации. Я работаю с ASP. NET CORE 3.1, и я создаю свое приложение с помощью руководств из MS Tutorial Identity
Я хочу, чтобы после регистрации новый пользователь получил электронное письмо для подтверждения регистрации . Ниже мой код:
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("kris202kris@gmail.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);
var response = client.SendEmailAsync(msg);
//return client.SendEmailAsync(msg);
return response;
}
}
AuthMessageSenderOptions.cs
public class AuthMessageSenderOptions
{
public string SendGridUser { get; set; }
public string SendGridKey { get; set; }
}
Startup.cs (часть)
// Email sending settings
services.AddTransient<IEmailSender, EmailSender>();
services.Configure<AuthMessageSenderOptions>(_config);
RegisterConfirmation.cs html .cs
[AllowAnonymous]
public class RegisterConfirmationModel : PageModel
{
private readonly UserManager<ApplicationUser> _userManager;
private readonly IEmailSender _sender;
public RegisterConfirmationModel(UserManager<ApplicationUser> userManager, IEmailSender sender)
{
_userManager = userManager;
_sender = sender;
}
public string Email { get; set; }
public bool DisplayConfirmAccountLink { get; set; }
public string EmailConfirmationUrl { get; set; }
public async Task<IActionResult> OnGetAsync(string email, string returnUrl = null)
{
if (email == null)
{
return RedirectToPage("/Index");
}
var user = await _userManager.FindByEmailAsync(email);
if (user == null)
{
return NotFound($"Unable to load user with email '{email}'.");
}
Email = email;
await _sender.SendEmailAsync(email, "Register Confirmation", "Html message");
return Page();
}
}
У меня тоже есть секреты. json:
{"SendGridUser" : "MyUserName", "SendGridKey" : "SG.5r.......WuU" }
У вас есть идеи, друзья?