[英]How to dispose the Azure Sendgrid Client?
我正在使用Azure Sendgrid发送电子邮件。 如何创建客户端发送电子邮件。 它没有一次性接口。
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;
}
1.我们可以创建单个客户端来发送所有短信吗(Singleton)
您可以使用sendgrid的批量电子邮件服务将电子邮件通信发送到多个收件人的大型列表。
2.一旦发送成功,如何调用using {}处理对象?
我反编译了sendgrid客户端,发现它依赖HttpClient来处理您的工作站与其API之间的实际Http通信。
http客户端实现IDisposable接口,该接口处理每个http请求,而sendgrid客户端没有一次性实例 。
3.像上面那样调用时是否有内存泄漏?
随着时间的流逝,调用邮件api的sendgrid客户端似乎正在保留内存或正在泄漏内存。
当您尝试发送成百上千封电子邮件时,您会看到内存使用量不断增加。无论客户端坚持使用哪种内存,即使几天后也再也没有释放内存,我们不得不重新启动服务器以清除内存。
SendGrid客户端依赖于Microsoft的HttpClient来处理工作站与其API之间的实际HTTP通信。
您可以尝试实例化单个HttpClient并将其重新用于每个HTTP请求。
有关更多详细信息,请参阅本文 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.