c# - 如何通过同步方法使用 SendGrid C# 库发送电子邮件?
问题描述
我需要从使用同步方法的 Asp.net WebForms 应用程序发送电子邮件。我知道我可以使用 SMTP 发送电子邮件,但我想使用更快的 SendGrid C# 库 API 发送电子邮件(根据我的测试)。https://github.com/sendgrid/sendgrid-csharp
这是我的代码。下面这五种方法哪一种是正确的?它们都可以工作,Visual Studio 没有显示任何错误。我不想因为使用不正确的方法而导致生产网站出错。
static void SendSampleEmailSync()
{
var client = new SendGridClient(apiKey);
var from = new EmailAddress("123@sink.sendgrid.net", "example user");
var subject = "Sending with Twilio SendGrid is Fun";
var to = new EmailAddress("123@sink.sendgrid.net", "example user");
var plainTextContent = "and easy to do anywhere, even with C#";
var htmlContent = "<strong>and easy to do anywhere, even with C#</strong>";
var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
// Method 1
var task = Task.Run(() => client.SendEmailAsync(msg));
var result = task.Result;
// Method 2
var result2 = client.SendEmailAsync(msg).Result;
// Method 3
_ = client.SendEmailAsync(msg);
// Method 4
client.SendEmailAsync(msg).ConfigureAwait(false);
// Method 5
var result4 = Task.Run(() => client.SendEmailAsync(msg)).GetAwaiter().GetResult();
}
解决方案
看起来最好的方法是使用这种方法:
var result = Task.Run(() => client.SendEmailAsync(msg)).GetAwaiter().GetResult();
推荐阅读
- ios - 如何在目标 C 中使用 PSPDFKIT (iOS) 突出显示文本
- python - 创建用于 enaml 的 python 类时,传递 Atom 的目的是什么?
- c# - 将 Alt+F4 发送到托管应用程序
- java - 使用 ObjectMapper java API 解析 JSON 字符串
- python-3.x - 如何在狮身人面像中记录“函数”类型的参数?
- python - 标记边界给定掩码
- python - Python 中的 AWS Lambda 无法导入模块
- azure - Azure 更新管理缺少更新
- javascript - 在 Firefox 中不同的值被认为是相等的
- javascript - 调用异步函数时,将回调包装在一个闭包中,该闭包将在执行原始重新进入代码之前恢复上下文