我正在尝试使用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密钥作为密码。
我试过了 -
我登录其门户网站的SendGrid用户名
以SG *开头的密码,根据其支持团队。
有什么建议我缺少什么或者我应该使用哪个UserName / APIKey?
的Tx!
答案 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门户网站中查找网络。
然后找到添加出站规则。
3.将587端口添加到出站角色。
更新
我建议您尝试使用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;