我已经运行了 Azure 功能应用程序(使用 python 语言),因为业务需求需要从功能应用程序发送电子邮件。
为此,我写了一个 python 函数
from email.message import EmailMessage
import smtplib
def send_mail():
# message to be sent
msg = EmailMessage()
msg.set_content('Test content')
msg['Subject'] = 'Test'
msg['From'] = "test@hotmail.com"
msg['To'] = ["test@hotmail.com"]
# creates SMTP session
s = smtplib.SMTP('smtp-mail.outlook.com', 587)
s.ehlo()
# start TLS for security
s.starttls()
# Authentication
s.login("test@hotmail.com", "password-to-login")
# sending the mail
s.send_message(msg)
# terminating the session
s.quit()
return
以上代码块在本地机器上运行良好。如果我将相同的代码移动到 Azure Function App,它就无法工作。
如何让它在 Azure 函数应用程序上运行?
如何在 Azure Function App 中从 Gmail 发送电子邮件?
原文由 Anbarasu Subramaniyan 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于公共云服务 IP 的弹性特性和潜在的虐待。因此,Azure 计算 IP 地址块被添加到公共块列表(例如 Spamhaus PBL)。此政策没有例外。
由于我们不支持从我们的平台运行和 smtp 服务器,这应该不会影响我们。
到目前为止,在 Azure Web App 上使用 EMAIL 功能的唯一方法是通过 SMTP 中继。第三方服务(例如 SendGrid)提供这些类型的服务。
在 Azure Web Apps 架构中,实际的 Web Apps 位于公共前端之后,由该数据中心托管的所有站点共享。
有可能是该数据中心托管的站点之一正在发送垃圾邮件,并且该 IP 地址可能会被 MAIL 服务器列入黑名单。因此,从该地址发送的电子邮件将被邮件服务器拒绝或视为垃圾邮件。在 VM 或云服务的情况下也存在此限制。 Azure 使用一个 IP 地址池,这些地址被重复使用。这意味着您可以获得一个已经列入黑名单的 IP 地址,因为之前有人从该地址发送垃圾邮件,因此您的电子邮件将被邮件服务器拒绝或视为垃圾邮件。
这是云中的常见场景,通常建议使用外部邮件服务提供商(如 SendGrid)进行消息传递。 SendGrid相关文章:
如何在 Azure 中使用 SendGrid 发送电子邮件: https ://azure.microsoft.com/en-in/documentation/articles/sendgrid-dotnet-how-to-send-email/