首先粘贴下javamail的一个实例,大家参考下:
将修改邮箱服务器地址,再将用户名和密码的信息换为你自己的邮箱,如下代码片段中的红色字体。
property.setProperty("mail.smtp.host ", "smtp.163.com");
property.setProperty("mail.smtp.auth", "true");
Authenticator aut = new Myauth("****@163.com","*******");
在编写javamail过程中遇到的问题:
1.java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream问题
该问题的解决引自:http://blog.csdn.net/liuyxit/archive/2010/01/15/5193802.aspx
2.Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
方法一:
这个问题是由于Javaee5中的mail还存在一些问题,和原来的mail.jar和activition.jar存在冲突。
如果你用myEclipse进行开发的话,运行时可能会出现以下的错误:
Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
原因是jar包版本不统一,解决方法如下:
删除Java EE 5 Libraries/javaee.jar/mail里的包有东西,如果还是不行把activition也删了。
具体方法如下:
用rar打开X:/Program Files/MyEclipse 6.0/myeclipse/eclipse/plugins/com.genuitec.eclipse.j2eedt.core_6.0.1.zmyeclipse601200710/data/libraryset/EE_5/javaee.jar
,然后删除mail,一接着把以前的mail.jar和activition.jar导入即可。
(具体是谁的blog我找不到原文了,这个应该和原文是一致的)
方法二:
JavaEE版本和JavaMail的版本不一致,请将sun公司上下载最新版本.
例如:javaMail 1.3以下的如果在javaEE5上就会出现上面的错误,
但如果在javaEE1.4下就正常.(但本人试过,javaEE5+javaMail1.4还是有一样的问题)
因为javaEE5中包含有javaMail的类但是却不全面,所以出本身的JavaMail
包冲突(引自:flatfish2000的http://flatfish2000.iteye.com/blog/437698)
3.Could not connect to SMTP host: localhost, port: 25;nested exception is:
这个问题一般是由于你的smtp服务器的配置错误引起的,比如我的问题是在
property.setProperty("mail.smtp.host ", "smtp.163.com");这句中的"mail.smtp.host "中多加了一个空格导致的问题,去掉后就好了。就是这个问题困绕了我一天。
4.javax.mail.AuthenticationFailedException
很明显是验证失败的问题,
1.就是你使用的邮件服务器是否支持smtp,比如qq的邮箱需要进行开通。
2.你用户名和密码是否正确。
最后给大家说下,就是在使用javamail时最好打开调试功能,这样就能更清楚的看到是哪个环节出了问题。
具体是加如下语句:session.setDebug(true);
解决:
在MyEclipse目录下,找javaee.jar包,用WinRar打包,删除里面的mail目录,然后加入mail.jar和activition.jar
具体下载位置请到网上搜下。
原因:
MyEclipse6.5的javaee.jar中的mail包与JavaMail包有冲突