asp.net Sendgrid Environment.GetEnvironmentVariable (APIKey) возвращает нулевое значение / разрешение отклонено, неверные учетные данные - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть приложение asp.net (webforms), и я использую SendGrid для отправки запланированных писем.

Письма не получены, и я получаю сообщение «Отказано в доступе, неверные учетные данные» при проверке response.Body.ReadAsStringAsync (). Результат

При проверке значения среды.GetEnvironmentVariable (APIKey), он возвращает нулевое значение.

Я получаю ключ SendGrid из webconfig, и он возвращает значение.Я также попытался добавить строку APIKey (SG ...) непосредственно в код, и у меня возникла та же проблема.

Я предполагаю, что должен где-то добавлять учетные данные sendgrid, но где?

Я уже использую этот ApiKey для отправки электронной почты из другого приложения, и он работает, однако я использую smtpClient для отправки этих электронных писем.

Это код, который я использую:

    private async Task TestSendEmail(DateTime SendAt)
    {
        string APIKey = ConfigurationManager.AppSettings["SendgridAPIKey"].ToString();

        var datetimeOffset = new DateTimeOffset(SendAt, TimeSpan.Zero);
        var apiKey = Environment.GetEnvironmentVariable(APIKey);
        var client = new SendGridClient(apiKey);
        //var from = new EmailAddress(QueueEmailAdmin, "Example User");
        var from = new EmailAddress("FromEmail@gmail.com");
        var subject = "Test Email";
        var to = new EmailAddress("myemail@gmail.com", "Example User");
        var plainTextContent = "This is a test";
        var htmlContent = "<strong>This is a test</strong>";
        var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
        msg.SendAt = datetimeOffset.ToUnixTimeSeconds();
        var response = await client.SendEmailAsync(msg).ConfigureAwait(false);
        Console.WriteLine(msg.Serialize());
        Console.WriteLine(response.StatusCode);
        Console.WriteLine(response.Body.ReadAsStringAsync().Result);
    }

1 Ответ

0 голосов
/ 18 июня 2019

Вы должны написать так ...

Environment.SetEnvironmentVariable("SENDGRID_API_KEY", APIKey);

var apikey = Environment.GetEnvironmentVariable("SENDGRID_API_KEY");

var client = new SendGridClient(apikey);
...