我已经开发了一个C#控制台应用程序,可以在某些情况下向我们的客户发送电子邮件。将应用程序部署为天蓝色的webjob时,不发送邮件。
在我的开发环境中从Visual Studio中进行测试时,发送邮件时没有出现预期的任何问题,但是当应用程序作为天蓝色的应用程序服务webjob部署并运行时,不会发送任何邮件。当部署为天蓝色的webjob时,该应用程序还可以按预期运行。
public enum MailType : short { Plain, Html }
private static string MimeType(MailType type)
{ return (type == MailType.Html) ? "text/html" : "text/plain"; }
private static async Task sendMail(string to, string name, string subject, MailType mailType, string content)
{
SendGridMessage msg = new SendGridMessage();
msg.From = new EmailAddress("noreply@foo.org", "Foo Ltd.");
msg.AddTo(to, name);
msg.Subject = subject;
msg.AddContent(MimeType(mailType), content);
SendGridClient client = new SendGridClient(SendGridAPIKey);
await client.SendEmailAsync(msg);
}
public static void SendMail(string to, string name, string subject, MailType mailType, string content)
{
sendMail(to, name, subject, mailType, content).Wait();
}
与该问题有关的所有其他问题(许多开发人员已解决此问题)的答案都集中在代码上;特别是异步实现,但这似乎不是问题。 azure对部署为webjob的应用程序与sendgrid服务器之间的通信是否有一些限制? (我正在使用sendgrid和sendgrid.helpers.mail)
答案 0 :(得分:0)
我与您一起测试了代码,它在本地和Azure上均能很好地工作。我在queueTrigger中调用SendMail
方法。
public static void ProcessQueueMessage([QueueTrigger("queue1")] string message, TextWriter log)
{
log.WriteLine(message);
SendMail("xxxxx@gmail.com", "xxxxx", "hello world", MailType.Plain, "have a good day.");
}
因此,您可以参考以下方法进行故障排除。
1。检查您的SendGridAPIKey
。如果您将SendGridAPIKey
作为环境变量存储在项目中,则需要转到Configuration
> Application Settings
并在其中添加密钥。
2。检查您的SendGrid活动。问题可能是将您的请求发送到SendGrid,或者可能是SendGrid收到了您的请求但未实现。检查活动供稿并搜索您需要的特定电子邮件