【发布时间】:2020-07-29 16:07:02
【问题描述】:
我有一个 Azure 函数,我正在尝试发送电子邮件:
EmailHelper.SendEmail(myEventHubMessage, notifyFrom, notifyTo, environment);
这是我的 SendEmail 方法:
MailMessage mail = new MailMessage(notifyFrom, notifyTo);
SmtpClient client = new SmtpClient();
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "The actual value of host";
mail.Subject = $"[{environment}]: [{keyvaultEvent.Data.VaultName}] Key Vault Event";
mail.Body = $"An event of type {keyvaultEvent.EventType} in KeyVault {keyvaultEvent.Data.VaultName} occured at {keyvaultEvent.EventTime}";
client.Send(mail);
我尝试在本地运行它,它工作正常。我收到一封电子邮件。部署 Azure 功能后,我收到一条错误消息 No such host is known
environment、notifyfrom 和 notifyto 的值来自应用设置。
知道为什么会这样吗?
【问题讨论】:
-
您是否将这些应用设置值添加到您的 azure 函数中?如果您在本地设置它们,我认为也没有一种机制可以在云中更新它们。当您上传/部署它时,它不会将应用程序设置文件转移到云中,因此您必须将它们设置为 azure 以便它检索值。见这里:docs.microsoft.com/en-us/azure/azure-functions/…
-
@tnw 是的,我将它们设置为配置值。
-
如何在本地加载配置?如果你是从 local.settings.json 加载它(你应该是),那么你可以看看stackoverflow.com/a/63124002/1138731。它对配置的工作原理进行了一些解释。
-
@lopezbertoni 这不是配置问题。即使我在代码本身中编写配置值,我也会得到同样的错误
-
@MAK 好的,请记住,如果您在 Startup.cs 中加载设置并使用 appsettings.json 或类似文件覆盖它们,则这些值可能会丢失。本地主机的行为不同。此外,该错误消息通常意味着 azure 函数有问题,您可以从门户运行诊断。
标签: c# smtp azure-functions azure-functions-runtime