Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
at javax.mail.Session.loadProvidersFromStream(Session.java:928)
at javax.mail.Session.access$000(Session.java:174)
at javax.mail.Session$1.load(Session.java:870)
at javax.mail.Session.loadResource(Session.java:1084)
at javax.mail.Session.loadProviders(Session.java:889)
at javax.mail.Session.<init>(Session.java:210)
at javax.mail.Session.getDefaultInstance(Session.java:299)
at javax.mail.Session.getDefaultInstance(Session.java:339)

出现以上问题主要是Myeclipse中自带java EE 5 Libraries中的javaee.jar包中javax下面mail包

和项目从外部lib下引用的weblogic.jar包中javax下面mail包冲突导致,

网上很多人这样解释,我有自己的看法,首先看图

 

 上面这样图是Myeclipse自带的jar包,没有这个类com/sun/mail/util/LineInputStream,而下面这个是从外部引用的jar包

 

 com/sun/mail/util/LineInputStream这个类确实在Myeclipse中自带java EE 5 Libraries中没有,但是我引用了外面的包还是报错,具体原因还是加载jar包的先后顺序问题,Mycelipse项目先去引用自带jar包中的mail类,所以外部引用的jar包自带mail不会引用。所以会报错,如果你的项目是纯javaSE项目,没有WebRoot,解决办法就是删除java EE 5 Libraries,发邮件的会自动引用外部引用的mail类。但如果你的项目是javaEE项目,删除java EE 5 Libraries项目会报错,那么你把java EE 5 Libraries换成java EE 6 Libraries,java EE 6 Libraries中的mail.jar中有这个类com/sun/mail/util/LineInputStream

 

 按照上面的步骤操作,邮件发送成功。