Я создал простое приложение MVC с представлением, которое использует форму сообщения для отправки электронного письма через SendGrid. Я также использую Google Recaptcha, но я проверил это с тем, что все закомментировано, и это та же проблема.
Я установил тот же код, который рекомендует Sendgrid [https://app.sendgrid.com/guide/integrate/langs/csharp], и использую пакет SendGrid NuGet. Я назвал свой метод sendgrid «SendMail», а не «Execute». Кажется, что электронная почта отправлена, но вызов SendMail.Wait () никогда не возвращается:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DemoPage(ContactVM contactInfo)
{
try
{
SendMail(contactInfo).Wait();
ViewBag.PostEmailMsg = "Your message has been sent.";
}
catch (Exception ex)
{
ViewBag.PostEmailErr = "We are currently unable to deliver your message. Please try again later. We apologize for the inconvenience.";
}
ViewBag.JumpToID = "contact";
return View(contactInfo);
}
static async Task SendMail(ContactVM contactInfo)
{
var apiKey = ConfigurationManager.AppSettings["sgapi"];
var sgClient = new SendGridClient(apiKey);
var from = new EmailAddress(contactInfo.Email, contactInfo.Name);
var subject = contactInfo.MsgSubject;
var to = new EmailAddress(ConfigurationManager.AppSettings["emailTo"] );
var plainTextContent = contactInfo.MsgText;
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, "");
var response = await sgClient.SendEmailAsync(msg);
}