SendGrid を使ってメールを送信する
MailKit 意味が分からないエラーたくさん出てきて困る。オフィシャルのパッケージがあるようなのでそれ SendGrid.NetCore
を使ってメールを送信してみます。
public sealed class Email { public string Address { get; set; } public string Subject { get; set; } public string Body { get; set; } public override string ToString () { return $"{{Address: {Address}, Subject: {Subject}, Body: {Body}}}"; } } public interface IEmailSender { Task SendAsync (Email email); } public sealed class SendGridEmailSender : IEmailSender { #region HIDDEN readonly ILogger _Logger; readonly Web _TransportWeb; readonly MailAddress _Sender; #endregion public SendGridEmailSender (IOptions<SendGridEmailSenderOptions> options, ILoggerFactory loggerFactory) { _Logger = loggerFactory.CreateLogger<SendGridEmailSender> (); _TransportWeb = new Web (new NetworkCredential (options.Value.UserName, options.Value.Password)); _Sender = new MailAddress (options.Value.Sender, options.Value.SenderDisplay); } public Task SendAsync (Email email) { var message = new SendGridMessage (); message.AddTo (email.Address); message.Subject = email.Subject; message.Text = email.Body; message.From = _Sender; return _TransportWeb .DeliverAsync (message) .ContinueWith (_ => _Logger.LogInformation ("Email sent: {0}", email)); } } public static class ServiceCollectionExtensions { public static void AddSendGridEmailSender (this IServiceCollection services, Action<SendGridEmailSenderOptions> configureOptions) { services.AddScoped<IEmailSender, SendGridEmailSender> (); services.Configure (configureOptions); } }
リファレンス更新してください、マジで。