发送邮件(通过java)在eclipse中工作,但不在Linux服务器

时间:2017-02-26 04:40:37

标签: java linux eclipse email smtp

我使用下面的java代码发送邮件。

    Properties properties = System.getProperties();
    properties.put("mail.transport.protocol", "smtp");
    properties.put("mail.smtp.auth", "true");
    properties.put("mail.smtp.starttls.enable", "true");
    properties.put("mail.smtp.host", "smtp.gmail.com");
    properties.put("mail.smtp.port", "587");

我可以在eclipse中使用它发送邮件(操作系统:Windows 7)。 但是在将相同的代码导出到war文件并在linux服务器上托管之后, 发送邮件时收到错误。

 ERROR [STDERR] javax.mail.MessagingException: Exception reading response;
 ERROR [STDERR]   nested exception is:
 ERROR [STDERR]     java.net.SocketException: Connection reset
 ERROR [STDERR]     at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1764)
 ERROR [STDERR]     at com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1632)
 ERROR [STDERR]     at com.sun.mail.smtp.SMTPTransport.startTLS(SMTPTransport.java:1483)
 ERROR [STDERR]     at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:462)
 ERROR [STDERR]     at javax.mail.Service.connect(Service.java:313)
 ERROR [STDERR]     at javax.mail.Service.connect(Service.java:172)
 ERROR [STDERR]     at javax.mail.Service.connect(Service.java:121)
 ERROR [STDERR]     at javax.mail.Transport.send0(Transport.java:190)
 ERROR [STDERR]     at javax.mail.Transport.send(Transport.java:120)

那么为什么它在eclipse(windows)中工作,而不是在linux上工作?

我试过

telnet smtp.gmail.com 587
在Windows中

telnet smtp.gmail.com 587

在linux中也试过了。

# telnet smtp.gmail.com 587
Trying 74.125.200.108...
Connected to smtp.gmail.com.
Escape character is '^]'.
220 smtp.gmail.com ESMTP n8sm22997292pgc.16 - gsmtp
Connection closed by foreign host.
#

所以请帮助我确定为什么会这样。 在linux中进行防火墙升级后,此问题开始出现。 它早先在linux上运行良好。

编辑:

在serverfault.com上发布了这个问题,因为它可能属于该论坛。

https://serverfault.com/questions/834958/sending-mail-via-java-is-working-in-eclipse-but-not-in-linux-server

如果此问题已关闭,请在那里回答。谢谢

0 个答案:

没有答案