如何解决如何通过同步方法使用SendGrid C#库发送电子邮件?
我需要从使用同步方法的Asp.net WebForms应用程序发送电子邮件。我知道我可以使用SMTP发送电子邮件,但是我想使用SendGrid C#库API发送电子邮件,该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();
,
您可以这样使用。
static async Task Execute()
{
var apiKey = Environment.GetEnvironmentVariable("NAME_OF_THE_ENVIRONMENT_VARIABLE_FOR_YOUR_SENDGRID_KEY");
var client = new SendGridClient(apiKey);
var from = new EmailAddress("email@xyz.com","Sample User");
var subject = "Sending with SendGrid is Fun";
var to = new EmailAddress("email@xyz.com","Sample 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);
var response = await client.SendEmailAsync(msg);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。