SendGrid SMTP集成问题

时间:2017-09-29 01:25:31

标签: c# azure smtp sendgrid

我正在尝试使用Azure上的SmtpClient和MailMessage方法在ASP.NET MVC应用程序中集成SendGrid。

代码:

npm test

我最终解决了来自Azure VM上的C#控制台应用程序和ASP.NET MVC应用程序的问题:

MailMessage message = new MailMessage();
message.IsBodyHtml = true;
message.Subject = "Subject";
message.To.Add("To@MyDomain.com");
message.Body = "Body";
message.From = new MailAddress("From@MyDomain.com", "From Name");

SmtpClient client = new SmtpClient("smtp.sendgrid.net");
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential("??", "SG.******");
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Port = 587; // I have tried with 25 and 2525
client.Timeout = 99999;
client.EnableSsl = false;

client.Send(message);

根据SendGrid网站上的文档avlb:https://sendgrid.com/docs/Classroom/Basics/Email_Infrastructure/recommended_smtp_settings.html

UserName和Password必须:使用字符串“apikey”作为SMTP用户名,并使用API​​密钥作为密码。

我试过了 -

  1. 我登录其门户网站的SendGrid用户名

  2. 此页面中的API密钥https://app.sendgrid.com/settings/api_keys

  3. 以SG *开头的密码,根据其支持团队。

  4. 有什么建议我缺少什么或者我应该使用哪个UserName / APIKey?

    的Tx!

2 个答案:

答案 0 :(得分:1)

链接说明:使用字符串“apikey”作为SMTP用户名,并使用API​​密钥作为密码。

https://sendgrid.com/docs/Classroom/Basics/Email_Infrastructure/recommended_smtp_settings.html

用户名被认为是 " apikey" 而不是实际的" api密钥或api名称"

BrightnessOverride bo = BrightnessOverride.GetDefaultForSystem();
bo.BrightnessLevel();

添加" apikey" (面掌)解决了我的问题。

答案 1 :(得分:0)

根据您的描述,我猜您可能不会为端口587添加VM出站角色。

我建议您按照以下步骤添加角色。

在azure vm门户网站中查找网络。

enter image description here

然后找到添加出站规则。

enter image description here

3.将587端口添加到出站角色。

enter image description here

更新

我建议您尝试使用sendgrid SDK来执行此操作。

我已经创建了一个测试控制台应用程序,它在我身边运行良好。

图书馆:SendGrid

代码如下:

        var client = new SendGridClient("sendgridkey");
        var from = new EmailAddress("send email address", "Example User");
        var subject = "Sending with SendGrid is Fun";
        var to = new EmailAddress("To email address", "Example User");
        var plainTextContent = $"Name : aaaa";
        var htmlContent = "<strong>and easy to do anywhere, even with C#</strong>";
        var msg = MailHelper.CreateSingleEmail(from, to, subject, plainTextContent, htmlContent);
         client.SendEmailAsync(msg).Wait();

        int i = 0;