JavaMail在Azure平台上抛出奇怪的异常,但在Linux上工作

JavaMail在Azure平台上抛出奇怪的异常,但在Linux上工作,java,azure,jakarta-mail,Java,Azure,Jakarta Mail,我正在开发一个使用JavaMail的JavaWeb应用程序。我正在尝试使用Gmail帐户发送一封传出邮件。我将JavaMail配置为使用smtp.gmail.com作为主机,587作为端口 我的测试环境是AmazonEC2上的Linux服务器。在测试环境中,它工作良好 我的生产环境是运行在Azure上的Windows服务器。在该环境中,它会出现以下异常: 2016-01-14 09:55:31406无法连接到主机,端口:localhost,25;超时-1 com.sun.mail.util.Ma

我正在开发一个使用JavaMail的JavaWeb应用程序。我正在尝试使用Gmail帐户发送一封传出邮件。我将JavaMail配置为使用smtp.gmail.com作为主机,587作为端口

我的测试环境是AmazonEC2上的Linux服务器。在测试环境中,它工作良好

我的生产环境是运行在Azure上的Windows服务器。在该环境中,它会出现以下异常:

2016-01-14 09:55:31406无法连接到主机,端口:localhost,25;超时-1 com.sun.mail.util.MailConnectException:无法连接到主机,端口:localhost,25;超时-1

我不明白的是为什么它报告localhost和25作为主机和端口。我确信我正确地配置了这些,因为它在Linux服务器上工作(并且这些值在源代码中是硬编码的,所以我不会因为缺少某些属性文件或环境变量而丢失它们)


Frank

在Azure上,NSG的传出规则拒绝Internet访问,请参见下面的图片

因此,Azure VM上的应用程序无法通过GMail直接发送电子邮件,但您可以使用
SendGrid
来发送电子邮件。你可以参考文档来了解它

如果必须使用应用程序发送电子邮件,可以尝试为NSG配置传出规则以允许Internet访问。请参阅文档的
如何为后端子网创建NSG一节或

或者,您可以尝试通过在Azure新门户上引用直接添加出站安全规则


否则,请检查Windows Server防火墙是否已启用绑定规则,请参阅以了解如何创建出站角色。

也许您正在创建这些角色之一?如果没有,请向我们显示您的代码和。