Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处置Azure Sendgrid客户端?_C#_Azure_Sendgrid - Fatal编程技术网

C# 如何处置Azure Sendgrid客户端?

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

我正在使用Azure Sendgrid发送电子邮件。如何创建发送电子邮件的客户端。它没有Idisposable接口

   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?我正在使用上面的代码。需要遵循的最佳方法是什么?我必须在我的应用程序中发送并发短信。天气会好还是不好?