我使用下面的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中
在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上发布了这个问题,因为它可能属于该论坛。
如果此问题已关闭,请在那里回答。谢谢