繁体   English   中英

如何处理Azure Sendgrid客户端?

[英]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)
  2. 发送成功后,如何调用using {}处理对象?
  3. 像上面那样调用时是否存在内存泄漏?

在此处输入图片说明

1.我们可以创建单个客户端来发送所有短信吗(Singleton)

您可以使用sendgrid的批量电子邮件服务将电子邮件通信发送到多个收件人的大型列表。

2.一旦发送成功,如何调用using {}处理对象?

我反编译了sendgrid客户端,发现它依赖HttpClient来处理您的工作站与其API之间的实际Http通信。

http客户端实现IDisposable接口,该接口处理每个http请求,而sendgrid客户端没有一次性实例

3.像上面那样调用时是否有内存泄漏?

随着时间的流逝,调用邮件apisendgrid客户端似乎正在保留内存正在泄漏内存。

当您尝试发送成百上千封电子邮件时,您会看到内存使用量不断增加。无论客户端坚持使用哪种内存,即使几天后也再也没有释放内存,我们不得不重新启动服务器以清除内存。

SendGrid客户端依赖于Microsoft的HttpClient来处理工作站与其API之间的实际HTTP通信。

您可以尝试实例化单个HttpClient并将其重新用于每个HTTP请求。

有关更多详细信息,请参阅本文

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM