我将sendgrid设置为使用Web api(而不是smtp中继)来发送电子邮件。 我按照C#上的说明发送电子邮件,包括创建api密钥环境变量和安装nuget包sendgrid。
在调用client.SendEmailAsync(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);
我在TCP和UDP的入站规则和出站规则中都添加了端口25和587,以在Windows防火墙中打开端口,但是电子邮件仍然无法发送。
答案 0 :(得分:0)
虽然这是一个老问题,但我的防火墙也有类似的问题。我必须允许从 sendgrid 服务器(传出接口)到我的 DMZ(传入接口,我的网站所在的接口)的 HTTPS 传输。用于从我的服务器 54.155.98.0 发送网格的地址。