Я создал проект основного веб-приложения asp.net (mvc), в который я интегрирую пакет nuget SendGrid
. По какой-то причине всякий раз, когда я регистрирую учетную запись и нажимаю «Отправить», она сообщает мне
Итак, когда я иду проверять свою электронную почту, она не появляется, даже папка нежелательной почты. From = new EmailAddress()
, я использовал несуществующий адрес электронной почты, и он не работал. Поэтому я решил использовать адрес электронной почты, который я использовал при создании учетной записи sendgrid, для получения ключа API, и это тоже не сработало, даже после создания совершенно нового электронного письма.
Я что-то делаю, из-за чего электронное письмо не отправляется на адрес электронной почты, который я указал при регистрации учетной записи?
Внутри Startup.cs
я добавил транзиент для sendgrid:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseMigrationsEndPoint();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
Мой класс EmailSenderService.cs
обрабатывает отправку электронной почты:
public class EmailSenderService : IEmailSender
{
public EmailSenderService(IOptions<AuthMessageSenderOptions> optionsAccessor)
{
Options = optionsAccessor.Value;
}
public AuthMessageSenderOptions Options { get; }
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("[email protected]", "Identity Demo"),
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);
}
}
appsettings.json
{
"ConnectionStrings": {
"DefaultConnection": "Server=.\\SQLExpress;Database=aspnet-ASP.NET_Core_IdentityDemo-2BDAC3A8-E5A9-492C-891F-EE1996D434EE;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"SendGridUser": "apikey",
"SendGridKey": "MY API KEY",
"AllowedHosts": "*"
}
Я проверил, позволяют ли настройки API отправлять электронные письма, и это...
ОБНОВЛЕНО
Ctor получает ошибку при установке значения Options
.