Windows Defender 防火墙正在阻止 SendGrid。

4
我设置了sendgrid以使用Web API(而不是SMTP中继)发送电子邮件。我按照C#发送电子邮件的说明进行操作,包括创建API密钥环境变量和安装SendGrid nuget包。
在调用client.SendEmailAsync(msg)后,返回的响应为“Accepted”,这意味着一切正常。但是,在我的测试电子邮件中没有收到任何电子邮件。
关闭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);

我已经将端口25和587添加到入站规则和出站规则中,无论是TCP还是UDP都开放了Windows防火墙的端口,但仍然无法发送电子邮件。


允许您的SMTP端口25和587。它会起作用的。 - Naveen
SMTP是HTTP的一种类型,其中有特殊字符必须进行编码(请参见:https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references)。电子邮件可能失败是因为您没有对特殊字符进行编码。您可以使用System.Net.WebUtility.HtmlEncode(string)进行编码。您能解释一下您的电子邮件包含什么吗?有任何附件和使用了哪种模式? - jdweng
我已更新我的代码,包括电子邮件的内容。 - Alexander
2
@jdweng SMTP不是HTTP类型,SMTP与HTTP没有任何关系。SMTP比HTTP早很多年发明。 - ADyson
1个回答

0
虽然这是一个老问题,但我在我的防火墙上遇到了类似的问题。我必须允许来自Sendgrid服务器(出站接口)到我的DMZ(入站接口,我的网站所在位置)的HTTPS传输。发送邮件的服务器地址是54.155.98.0。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接