C# 如何处置Azure Sendgrid客户端?
我正在使用Azure Sendgrid发送电子邮件。如何创建发送电子邮件的客户端。它没有Idisposable接口C# 如何处置Azure Sendgrid客户端?,c#,azure,sendgrid,C#,Azure,Sendgrid,我正在使用Azure Sendgrid发送电子邮件。如何创建发送电子邮件的客户端。它没有Idisposable接口 public async Task<string> SendEmailAsync(string EmailTo, string Username, string Subject, string PlainTextContent, string HtmlContent) { string apikey = Configuration.Azur
public async Task<string> SendEmailAsync(string EmailTo, string Username, string Subject, string PlainTextContent, string HtmlContent)
{
string apikey = Configuration.AzureSendgridSecretProvider.ApiKey;
string responseStatus = "BadRequest";
var query = "Email_" + EmailTo + ";" + "Username_" + Username + ";" + "VerficationCode_" + HtmlContent+ ";apikey" + apikey;
var client = new SendGridClient(apikey);
try
{
var msg = new SendGridMessage()
{
From = new EmailAddress(Configuration.AzureTableStorageSendGridProvider.EmailAddress, Configuration.AzureTableStorageSendGridProvider.EmailName),
Subject = Subject,
PlainTextContent = PlainTextContent,
HtmlContent = HtmlContent
};
msg.AddTo(new EmailAddress(EmailTo, Username));
var response = await client.SendEmailAsync(msg);
responseStatus = response.StatusCode.ToString();
}
catch (Exception ex)
{
}
return responseStatus;
}
我们可以创建一个客户端来发送所有的短信吗
一旦发送成功,如何使用{}来调用dispose对象?
像上面那样调用时是否存在内存泄漏?
1.我们可以创建一个客户端来发送所有短信吗
您可以使用sendgrid向多个收件人的大列表发送电子邮件通信
2.一旦发送成功,如何调用using{}来处理对象
我对sendgrid客户端进行了反编译,发现它依赖于HttpClient来处理工作站与其API之间的实际Http通信
http客户端实现IDisposable接口,该接口处理每个http请求,而sendgrid客户端没有一次性实例
3.如上所述调用时是否存在内存泄漏
随着时间的推移,调用邮件api的sendgrid客户端似乎会占用或泄漏内存
当您尝试发送数百或数千封电子邮件时,您会看到内存使用量不断增加。无论客户端中有什么内存,即使几天后也不会释放内存,我们必须重新启动服务器以清除内存
SendGrid客户端依赖于Microsoft的HttpClient来处理工作站与其API之间的实际HTTP通信
您可以尝试实例化单个HttpClient,并对每个HTTP请求重用它
有关更多详细信息,请参阅此项。您是否询问它是否存在内存泄漏?为什么你认为它需要IDisposable?我正在使用上面的代码。需要遵循的最佳方法是什么?我必须在我的应用程序中发送并发短信。天气会好还是不好?