Как правильно использовать Sendgrid v3 в методе контроллера MVC? - PullRequest
0 голосов
/ 06 марта 2019

Я создал простое приложение 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);
    }
...