急:java发送邮件,部署在windows下可以正常发送,部署在linux下无法发送

_陌 2016-01-19 03:55:28
加精
RT

发送代码如下:
http://blog.sina.com.cn/s/blog_59ca2c2a01013800.html

经测试, 在本地(windows+tomcat)可正常执行并发送邮件,
但是部署到linux后,就无法发送了,卡在了这一步:
Transport.send(mailMessage);

linux后台没有任何报错信息,就卡在这发不出去了
ping外网和邮箱服务器都可以正常ping通,百度上能找到的解决方案都试过了,都不行



请问各位大虾,何解?
注:linux控制台没有报任何错误信息,只是卡在Transport.send(mailMessage);这不动了
...全文
7197 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
演员赵诗绎 2016-12-29
  • 打赏
  • 举报
回复
请问一下我在linux上遇到了java.net.UnknownHostException: smtp.163.com 而在windows下面是正常的,那么我怎么找到smtp.163.com对应的ip地址呢?试了好多都还是一样的错误。
blueink_200451 2016-01-24
  • 打赏
  • 举报
回复
这么多高手,搬个凳子来看。
_陌 2016-01-22
  • 打赏
  • 举报
回复
回帖拿分。。。
_陌 2016-01-21
  • 打赏
  • 举报
回复
感谢各位回答,问题已解决,是由于linux无法解析域名地址导致的,需要在代码中将邮件服务器地址改成IP的,如:stmp.mail.163.com改成:220.181.72.147,如果不想改的话, 需要在linux邮件服务配置一下,具体如何配置度娘多的是。 如果遇到同类问题,可能的几种情况是: 1、检查linux邮件系统是否可以收发邮件 2、检查代码中的邮件服务地址是否正确 3、检查linux防火墙 4、检查是否可以ping通外网(或者直接) 感谢回复,结贴
业余草 2016-01-20
  • 打赏
  • 举报
回复
Linux 下你的防火墙是否开着 哥 你的防火墙在开着吧 关闭防火墙命令如下: service iptables stop 你最好做到防火墙例外: http://www.myhack58.com/Article/48/66/2012/34999.htm
效林少爷 2016-01-20
  • 打赏
  • 举报
回复
看不出什么问题 想到一点 linux和window 环境下 JDK版本是否一致
fqyjames 2016-01-20
  • 打赏
  • 举报
回复
这么多高手,搬个凳子来看。
_陌 2016-01-19
  • 打赏
  • 举报
回复
引用 15 楼 ni6kai 的回复:
引用 13 楼 perfect123yang 的回复:
[quote=引用 9 楼 ni6kai 的回复:] linux setDebug 如下: DEBUG: setDebug: JavaMail version 1.4 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 EHLO localhost.localdomain 250-mail.btte.net 250-VRFY 250-ETRN 250-8BITMIME 250-AUTH LOGIN PLAIN CRAM-MD5 250-STARTTLS 250 SIZE 317030400 DEBUG SMTP: Found extension "VRFY", arg "" DEBUG SMTP: Found extension "ETRN", arg "" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN CRAM-MD5" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "SIZE", arg "317030400" DEBUG SMTP: Attempt to authenticate AUTH LOGIN 334 VXNlcm5hbWU6 bWFzdGVyQGJ0dGUubmV0 334 UGFzc3dvcmQ6 YnR0ZV8yMDEy 235 auth successfully DEBUG SMTP: use8bit false MAIL FROM:<master@btte.net> 250 OK RCPT TO:<liuk@btte.net> 250 OK DEBUG SMTP: Verified Addresses DEBUG SMTP: liuk@btte.net DATA 354 Start mail input; end with <CRLF>.<CRLF> Date: Wed, 20 Jan 2016 01:01:56 +0800 (CST) From: master@btte.net To: liuk@btte.net Message-ID: <707845856.01453222916800.JavaMail.root@localhost.localdomain> Subject: =?UTF-8?B?55m76ZmG5Yqo5oCB5a+G56CB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 这个可以看出什么问题么? [quote=引用 8 楼 perfect123yang 的回复:] 如果不是项目本身的问题的话,建议楼猪首先测试一下,在linux系统下,通过命令mail 去发送邮件 ,看能不能发送邮件成功,如果这种方式可以发送成功的话,那就考虑下是不是环境部署或者导包]的问题. 不谢 ~ 飘过 ~
引用 9 楼 ni6kai 的回复:
linux setDebug 如下: DEBUG: setDebug: JavaMail version 1.4 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 EHLO localhost.localdomain 250-mail.btte.net 250-VRFY 250-ETRN 250-8BITMIME 250-AUTH LOGIN PLAIN CRAM-MD5 250-STARTTLS 250 SIZE 317030400 DEBUG SMTP: Found extension "VRFY", arg "" DEBUG SMTP: Found extension "ETRN", arg "" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN CRAM-MD5" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "SIZE", arg "317030400" DEBUG SMTP: Attempt to authenticate AUTH LOGIN 334 VXNlcm5hbWU6 bWFzdGVyQGJ0dGUubmV0 334 UGFzc3dvcmQ6 YnR0ZV8yMDEy 235 auth successfully DEBUG SMTP: use8bit false MAIL FROM:<master@btte.net> 250 OK RCPT TO:<liuk@btte.net> 250 OK DEBUG SMTP: Verified Addresses DEBUG SMTP: liuk@btte.net DATA 354 Start mail input; end with <CRLF>.<CRLF> Date: Wed, 20 Jan 2016 01:01:56 +0800 (CST) From: master@btte.net To: liuk@btte.net Message-ID: <707845856.01453222916800.JavaMail.root@localhost.localdomain> Subject: =?UTF-8?B?55m76ZmG5Yqo5oCB5a+G56CB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 这个可以看出什么问题么?
引用 8 楼 perfect123yang 的回复:
如果不是项目本身的问题的话,建议楼猪首先测试一下,在linux系统下,通过命令mail 去发送邮件 ,看能不能发送邮件成功,如果这种方式可以发送成功的话,那就考虑下是不是环境部署或者导包]的问题. 不谢 ~ 飘过 ~
楼主能否吧 DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 中的 isSSL 设置为 true 再试试 [/quote] 好的, 我试试[/quote] 额, 这个好像改不了,
tony4geek 2016-01-19
  • 打赏
  • 举报
回复
不知道啊。又不是防火墙端口的原因
_陌 2016-01-19
  • 打赏
  • 举报
回复
引用 10 楼 rui888 的回复:
是超时吗? I ran into exactly the same problem and others have reported intermittent failures. The reason is that Transport.send with SMTP has two infinite timeouts which can result in your process just hanging! From SUN documentation: mail.smtp.connectiontimeout int Socket connection timeout value in milliseconds. Default is infinite timeout. mail.smtp.timeout int Socket I/O timeout value in milliseconds. Default is infinite timeout. To not "hang" forever, you can set these explicitly: From SUN: The properties are always set as strings; the Type column describes how the string is interpreted. For example, use
不是超时, 还有, 我记得我在网上看到过同样的这种问题, 是你回答的
_陌 2016-01-19
  • 打赏
  • 举报
回复
引用 13 楼 perfect123yang 的回复:
引用 9 楼 ni6kai 的回复:
linux setDebug 如下: DEBUG: setDebug: JavaMail version 1.4 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 EHLO localhost.localdomain 250-mail.btte.net 250-VRFY 250-ETRN 250-8BITMIME 250-AUTH LOGIN PLAIN CRAM-MD5 250-STARTTLS 250 SIZE 317030400 DEBUG SMTP: Found extension "VRFY", arg "" DEBUG SMTP: Found extension "ETRN", arg "" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN CRAM-MD5" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "SIZE", arg "317030400" DEBUG SMTP: Attempt to authenticate AUTH LOGIN 334 VXNlcm5hbWU6 bWFzdGVyQGJ0dGUubmV0 334 UGFzc3dvcmQ6 YnR0ZV8yMDEy 235 auth successfully DEBUG SMTP: use8bit false MAIL FROM:<master@btte.net> 250 OK RCPT TO:<liuk@btte.net> 250 OK DEBUG SMTP: Verified Addresses DEBUG SMTP: liuk@btte.net DATA 354 Start mail input; end with <CRLF>.<CRLF> Date: Wed, 20 Jan 2016 01:01:56 +0800 (CST) From: master@btte.net To: liuk@btte.net Message-ID: <707845856.01453222916800.JavaMail.root@localhost.localdomain> Subject: =?UTF-8?B?55m76ZmG5Yqo5oCB5a+G56CB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 这个可以看出什么问题么? [quote=引用 8 楼 perfect123yang 的回复:] 如果不是项目本身的问题的话,建议楼猪首先测试一下,在linux系统下,通过命令mail 去发送邮件 ,看能不能发送邮件成功,如果这种方式可以发送成功的话,那就考虑下是不是环境部署或者导包]的问题. 不谢 ~ 飘过 ~
引用 9 楼 ni6kai 的回复:
linux setDebug 如下: DEBUG: setDebug: JavaMail version 1.4 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 EHLO localhost.localdomain 250-mail.btte.net 250-VRFY 250-ETRN 250-8BITMIME 250-AUTH LOGIN PLAIN CRAM-MD5 250-STARTTLS 250 SIZE 317030400 DEBUG SMTP: Found extension "VRFY", arg "" DEBUG SMTP: Found extension "ETRN", arg "" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN CRAM-MD5" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "SIZE", arg "317030400" DEBUG SMTP: Attempt to authenticate AUTH LOGIN 334 VXNlcm5hbWU6 bWFzdGVyQGJ0dGUubmV0 334 UGFzc3dvcmQ6 YnR0ZV8yMDEy 235 auth successfully DEBUG SMTP: use8bit false MAIL FROM:<master@btte.net> 250 OK RCPT TO:<liuk@btte.net> 250 OK DEBUG SMTP: Verified Addresses DEBUG SMTP: liuk@btte.net DATA 354 Start mail input; end with <CRLF>.<CRLF> Date: Wed, 20 Jan 2016 01:01:56 +0800 (CST) From: master@btte.net To: liuk@btte.net Message-ID: <707845856.01453222916800.JavaMail.root@localhost.localdomain> Subject: =?UTF-8?B?55m76ZmG5Yqo5oCB5a+G56CB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 这个可以看出什么问题么?
引用 8 楼 perfect123yang 的回复:
如果不是项目本身的问题的话,建议楼猪首先测试一下,在linux系统下,通过命令mail 去发送邮件 ,看能不能发送邮件成功,如果这种方式可以发送成功的话,那就考虑下是不是环境部署或者导包]的问题. 不谢 ~ 飘过 ~
楼主能否吧 DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 中的 isSSL 设置为 true 再试试 [/quote] 好的, 我试试
tony4geek 2016-01-19
  • 打赏
  • 举报
回复
http://stackoverflow.com/questions/8907229/transport-sendmessage-not-working-in-the-below-code-netbeans-gets-stuck-at-t
tony4geek 2016-01-19
  • 打赏
  • 举报
回复
是超时吗? I ran into exactly the same problem and others have reported intermittent failures. The reason is that Transport.send with SMTP has two infinite timeouts which can result in your process just hanging! From SUN documentation: mail.smtp.connectiontimeout int Socket connection timeout value in milliseconds. Default is infinite timeout. mail.smtp.timeout int Socket I/O timeout value in milliseconds. Default is infinite timeout. To not "hang" forever, you can set these explicitly: From SUN: The properties are always set as strings; the Type column describes how the string is interpreted. For example, use
perfect恋爱 2016-01-19
  • 打赏
  • 举报
回复
引用 9 楼 ni6kai 的回复:
linux setDebug 如下: DEBUG: setDebug: JavaMail version 1.4 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 EHLO localhost.localdomain 250-mail.btte.net 250-VRFY 250-ETRN 250-8BITMIME 250-AUTH LOGIN PLAIN CRAM-MD5 250-STARTTLS 250 SIZE 317030400 DEBUG SMTP: Found extension "VRFY", arg "" DEBUG SMTP: Found extension "ETRN", arg "" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN CRAM-MD5" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "SIZE", arg "317030400" DEBUG SMTP: Attempt to authenticate AUTH LOGIN 334 VXNlcm5hbWU6 bWFzdGVyQGJ0dGUubmV0 334 UGFzc3dvcmQ6 YnR0ZV8yMDEy 235 auth successfully DEBUG SMTP: use8bit false MAIL FROM:<master@btte.net> 250 OK RCPT TO:<liuk@btte.net> 250 OK DEBUG SMTP: Verified Addresses DEBUG SMTP: liuk@btte.net DATA 354 Start mail input; end with <CRLF>.<CRLF> Date: Wed, 20 Jan 2016 01:01:56 +0800 (CST) From: master@btte.net To: liuk@btte.net Message-ID: <707845856.01453222916800.JavaMail.root@localhost.localdomain> Subject: =?UTF-8?B?55m76ZmG5Yqo5oCB5a+G56CB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 这个可以看出什么问题么?
引用 8 楼 perfect123yang 的回复:
如果不是项目本身的问题的话,建议楼猪首先测试一下,在linux系统下,通过命令mail 去发送邮件 ,看能不能发送邮件成功,如果这种方式可以发送成功的话,那就考虑下是不是环境部署或者导包]的问题. 不谢 ~ 飘过 ~
引用 9 楼 ni6kai 的回复:
linux setDebug 如下: DEBUG: setDebug: JavaMail version 1.4 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 EHLO localhost.localdomain 250-mail.btte.net 250-VRFY 250-ETRN 250-8BITMIME 250-AUTH LOGIN PLAIN CRAM-MD5 250-STARTTLS 250 SIZE 317030400 DEBUG SMTP: Found extension "VRFY", arg "" DEBUG SMTP: Found extension "ETRN", arg "" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN CRAM-MD5" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "SIZE", arg "317030400" DEBUG SMTP: Attempt to authenticate AUTH LOGIN 334 VXNlcm5hbWU6 bWFzdGVyQGJ0dGUubmV0 334 UGFzc3dvcmQ6 YnR0ZV8yMDEy 235 auth successfully DEBUG SMTP: use8bit false MAIL FROM:<master@btte.net> 250 OK RCPT TO:<liuk@btte.net> 250 OK DEBUG SMTP: Verified Addresses DEBUG SMTP: liuk@btte.net DATA 354 Start mail input; end with <CRLF>.<CRLF> Date: Wed, 20 Jan 2016 01:01:56 +0800 (CST) From: master@btte.net To: liuk@btte.net Message-ID: <707845856.01453222916800.JavaMail.root@localhost.localdomain> Subject: =?UTF-8?B?55m76ZmG5Yqo5oCB5a+G56CB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 这个可以看出什么问题么?
引用 8 楼 perfect123yang 的回复:
如果不是项目本身的问题的话,建议楼猪首先测试一下,在linux系统下,通过命令mail 去发送邮件 ,看能不能发送邮件成功,如果这种方式可以发送成功的话,那就考虑下是不是环境部署或者导包]的问题. 不谢 ~ 飘过 ~
楼主能否吧 DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 中的 isSSL 设置为 true 再试试
_陌 2016-01-19
  • 打赏
  • 举报
回复
linux setDebug 如下: DEBUG: setDebug: JavaMail version 1.4 DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc] DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: useEhlo true, useAuth true DEBUG SMTP: trying to connect to host "172.16.1.172", port 25, isSSL false 220 TurboMail SMTP Service ready DEBUG SMTP: connected to host "172.16.1.172", port: 25 EHLO localhost.localdomain 250-mail.btte.net 250-VRFY 250-ETRN 250-8BITMIME 250-AUTH LOGIN PLAIN CRAM-MD5 250-STARTTLS 250 SIZE 317030400 DEBUG SMTP: Found extension "VRFY", arg "" DEBUG SMTP: Found extension "ETRN", arg "" DEBUG SMTP: Found extension "8BITMIME", arg "" DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN CRAM-MD5" DEBUG SMTP: Found extension "STARTTLS", arg "" DEBUG SMTP: Found extension "SIZE", arg "317030400" DEBUG SMTP: Attempt to authenticate AUTH LOGIN 334 VXNlcm5hbWU6 bWFzdGVyQGJ0dGUubmV0 334 UGFzc3dvcmQ6 YnR0ZV8yMDEy 235 auth successfully DEBUG SMTP: use8bit false MAIL FROM:<master@btte.net> 250 OK RCPT TO:<liuk@btte.net> 250 OK DEBUG SMTP: Verified Addresses DEBUG SMTP: liuk@btte.net DATA 354 Start mail input; end with <CRLF>.<CRLF> Date: Wed, 20 Jan 2016 01:01:56 +0800 (CST) From: master@btte.net To: liuk@btte.net Message-ID: <707845856.01453222916800.JavaMail.root@localhost.localdomain> Subject: =?UTF-8?B?55m76ZmG5Yqo5oCB5a+G56CB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 这个可以看出什么问题么?
引用 8 楼 perfect123yang 的回复:
如果不是项目本身的问题的话,建议楼猪首先测试一下,在linux系统下,通过命令mail 去发送邮件 ,看能不能发送邮件成功,如果这种方式可以发送成功的话,那就考虑下是不是环境部署或者导包]的问题. 不谢 ~ 飘过 ~
perfect恋爱 2016-01-19
  • 打赏
  • 举报
回复
如果不是项目本身的问题的话,建议楼猪首先测试一下,在linux系统下,通过命令mail 去发送邮件 ,看能不能发送邮件成功,如果这种方式可以发送成功的话,那就考虑下是不是环境部署或者导包]的问题. 不谢 ~ 飘过 ~
_陌 2016-01-19
  • 打赏
  • 举报
回复
别沉啊,没人遇到过这种情况么?
_陌 2016-01-19
  • 打赏
  • 举报
回复






_陌 2016-01-19
  • 打赏
  • 举报
回复
引用 4 楼 shijing266 的回复:
Transport.send(mailMessage); 你把整段代码try catch起来,看看有没有什么异常, 我猜测应该是内部拦截了,导致你看不到异常
我加trye catch,不过控制台还是没打印什么错误信息, 这个在windows上是可以正常发送邮件的,部到服务上就 不行了,服务器是linux+tomcat,防火墙都关了,外网也可以ping通
加载更多回复(4)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧