SendGrid API для .net core не отправляет электронные письма

#c# #visual-studio #email #.net-core #sendgrid

# #c# #visual-studio #Адрес электронной почты #.net-ядро #отправить сетку

Вопрос:

Я пытаюсь реализовать .NET CORE API sendgrid, следуя руководству:

https://docs.microsoft.com/it-it/aspnet/core/security/authentication/accconfirm?view=aspnetcore-5.0amp;tabs=visual-studio#debug

Но я не могу отправлять электронные письма.

     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("myemail@email.it", 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);
        return client.SendEmailAsync(msg);
    }
 

Код не выдает ошибку, но не отправляет электронные письма.
У вас есть какие-либо предложения?
Спасибо

Комментарии:

1. Если вы используете бесплатный тарифный план SendGrid, имейте в виду, что некоторые поставщики услуг электронной почты могут блокировать запросы с IP-адресов Azure, которые отправляют эти электронные письма.

2. Спасибо за ответ, да, я использую бесплатный тарифный план, являются ли Outlook и gmail одними из тех, которые вызывают проблемы? потому что я пробовал как почтовый ящик office365, так и gmail. Спасибо

Ответ №1:

Для меня это выглядит хорошо. Я бы проверил правильность вашего ключа API. Можете ли вы поделиться кодом, который фактически вызывает этот метод? Очевидно, исключите API из соображений безопасности.

Комментарии:

1. Спасибо за ответ, я использую регистр Identity Controrrel, я не могу полностью согласиться с кодом, потому что я превышаю длину комментария.

2. public async Task<IActionResult> OnPostAsync(string returnUrl = null) { if (ModelState.IsValid) { { await _emailSender.SendEmailAsync(Input.Email, "Conferma la tua email", $"Conferma il tuo account < a href='{HtmlEncoder.Default.Encode(callbackUrl)}'> facendo clic qui </a>."); } } return Page(); }

3. Спасибо, вы установили точку останова для этого метода, чтобы узнать, попадает ли он вообще?