Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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# Windows Defender防火墙正在阻止sendgrid_C#_Sendgrid - Fatal编程技术网

C# Windows Defender防火墙正在阻止sendgrid

C# Windows Defender防火墙正在阻止sendgrid,c#,sendgrid,C#,Sendgrid,我将sendgrid设置为使用web api(而不是smtp中继)发送电子邮件。 我按照C#如何发送电子邮件的说明进行操作,包括创建api密钥环境变量和安装nuget package sendgrid 调用client.sendmailasync(msg)后,返回的响应为“已接受”,表示一切正常。但在我的测试电子邮件上没有收到任何电子邮件 关闭Windows Defender防火墙后,已发送电子邮件。所以我认为防火墙阻止了我发送电子邮件 我的问题是,如何在防火墙中为sendgrid添加例外设置,

我将sendgrid设置为使用web api(而不是smtp中继)发送电子邮件。 我按照C#如何发送电子邮件的说明进行操作,包括创建api密钥环境变量和安装nuget package sendgrid

调用client.sendmailasync(msg)后,返回的响应为“已接受”,表示一切正常。但在我的测试电子邮件上没有收到任何电子邮件

关闭Windows Defender防火墙后,已发送电子邮件。所以我认为防火墙阻止了我发送电子邮件

我的问题是,如何在防火墙中为sendgrid添加例外设置,以允许sendgrid发送电子邮件,或者sendgrid或防火墙中是否存在我遗漏的配置

守则:

        var apiKey = Environment.GetEnvironmentVariable("SendGridApiKey");
        var client = new SendGridClient(apiKey);
        var from = new EmailAddress("test@example.com", "Example User");
        var subject = "Sending with SendGrid is Fun";
        var to = new EmailAddress("my_outlook_email_here", "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);
        var response = await client.SendEmailAsync(msg);
var-apiKey=Environment.GetEnvironmentVariable(“SendGridApiKey”);
var client=新的SendGridClient(apiKey);
var from=新电子邮件地址(“test@example.com“,”示例用户“);
var subject=“使用SendGrid发送很有趣”;
var to=新电子邮件地址(“我的outlook电子邮件地址”,“示例用户”);
var plainTextContent=“而且在任何地方都可以轻松完成,即使使用C#”;
var htmlContent=“并且在任何地方都可以轻松完成,即使使用C#”;
var msg=MailHelper.CreateSingleEmail(发件人、收件人、主题、明文内容、htmlContent);
var response=wait client.sendmailasync(msg);

我将端口25和587添加到TCP和UDP的入站规则和出站规则中,以打开windows防火墙中的端口,但电子邮件不能静止发送。

虽然这是一个老问题,但我的防火墙也有类似的问题。我必须允许HTTPS从sendgrid服务器(传出接口)传输到我的DMZ(传入接口,我的网站所在地)。我的服务器54.155.98.0中用于sendgrid的地址。

允许smtp端口25和587。SMTP是一种HTTP类型,具有必须编码的特殊字符(请参阅)。电子邮件可能会失败,因为您没有对特殊字符进行编码。您可以使用System.Net.WebUtility.HtmlEncode(字符串)进行编码。你能解释一下你的电子邮件包含什么吗。任何附件以及您使用的模式。我用我的代码更新了上面的内容,以包括email@jdwengSMTP不是HTTP的一种类型。它与HTTP无关。SMTP发明于HTTP之前很长一段时间。