检查SendGrid API Key是否正确配置,确保API Key可以访问SendGrid服务。
确认SendGrid API Key已在应用程序中配置。
确认SendGrid客户端已被注入,并检查是否已成功完成注入。
检查邮件发送地址是否正确。可以将地址更改为另一个有效邮件地址,并尝试重新发送邮件。
以下是一些可能的SendGrid配置示例:
appsettings.json:
"SendGrid": {
"ApiKey": "xxx",
"FromName": "xxx",
"FromEmail": "xxx"
}
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
// Add SendGrid
services.AddTransient((x =>
new SendGridClient(Configuration.GetValue("SendGrid:ApiKey"))));
services.AddTransient();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
// Add SendGrid
var sendGridOptions = Configuration.GetSection("SendGrid").Get();
if (sendGridOptions != null)
{
app.UseSendGridEmail(new SendGridEmailOptions
{
ApiKey = sendGridOptions.ApiKey,
FromName = sendGridOptions.FromName,
FromEmail = sendGridOptions.FromEmail
});
}
}
SendEmailService.cs:
public interface ISendEmailService
{
Task SendEmailAsync(EmailMessage emailMessage);
}
public class SendEmailService : ISendEmailService
{
private readonly ISendGridClient _sendGridClient;
public SendEmailService(ISendGridClient sendGridClient)
{
_sendGridClient = sendGridClient;
}
public async Task SendEmailAsync(EmailMessage emailMessage)
{
var from = new EmailAddress(emailMessage.From);
var subject = emailMessage.Subject;
var to = new EmailAddress(emailMessage.To);
var plainTextContent = emailMessage.PlainTextContent;
var htmlContent = emailMessage.HtmlContent;
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
var response = await _sendGridClient.SendEmailAsync(msg);
}
}