嗨,any1 可以告诉我如何在不使用 sendgrid 或任何其他第 3 方的情况下在 azure 中实现电子邮件功能。我们可以有服务总线来连接天蓝色和交换服务器来发送电子邮件吗
2 回答
问题不在于必须使用第三方,而在于安全和防火墙的影响——尤其是对于企业安全霸主而言。交换服务器可以启用传出 smtp(即使有用户名和密码),任何应用程序(包括在 Azure 上运行的应用程序)都可以轻松发送传出 SMTP。您总是会遇到的问题是交换服务器周围的安全性不允许来自公共 IP 地址的 smtp(黑客经常扫描开放端口 25,以便他们可以通过毫无戒心的邮件服务器中继垃圾邮件)。Windows Azure(角色和网站)无法使用固定(传出)IP,因此无法创建防火墙规则。
您的选择是:
- 使用您的公司网络设置 VPN,以便您的 Azure 实例从私有 IP 地址发送。
- 在 Azure VM 上运行邮件中继服务。虚拟机可以无限租用一个 IP 地址,所以不会改变(很多)。有在 Linux 上运行的简单而廉价的邮件传输代理服务。
- 使用任何 'ol smtp 服务器。如果您发送的内容不多,您可以使用 Google 甚至 outlook.com。Outlook.com 允许您配置托管在其他地方的帐户,因此您应该能够将 smtp 与您的 windows live id(Microsoft 帐户)一起使用。
我会避免编写使用服务总线之类的复杂代码和服务。System.Net.Mail 应该用于发送到 smtp 服务器。
我过去看到的一件事是让 Windows Azure 应用程序将消息放入队列中,以及可选的一些较大的数据(附件、大正文等)放在一个 blob 中。这将获取存储在 Windows Azure 存储中的数据。从那里,本地应用程序(例如 Windows 服务)可以提取队列和 blob 数据,构建电子邮件,并将其发送到本地 Exchange 服务器。
如果您需要将所有内容都托管在云上,那么我认为您应该能够将您的 Windows Azure 应用程序连接到 Exchange Web 服务端点(假设您可以正确保护它并建立 Web 服务连接)。