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);
    }
}

リファレンス更新してください、マジで。