У меня есть приложение 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);
}