commons-email实现发送邮件及遇到的问题

项目是用maven管理,首先导入以下依赖

org.apache.commons
commons-email
1.4

会自动帮你导入javax.mail activation jar包。

java中发送邮件需要这些jar包就够了。后面我会讲我遇到的jar包冲突。

代码部分可以参考如下博客:

http://blog.csdn.net/wang379275614/article/details/46624889

或者这个:

http://www.jb51.net/article/85839.htm

具体流程就是:

先导入依赖,再创建一个Mail实体类,封装发送邮件所需要的信息,如服务器地址,发件人,收件人,发件人的邮箱账号密码,主题,内容等。

然后写一个工具类MailUtil,从实体类中获取参数填充email(HtmlEmail或SimpleEmail),执行发送邮件的操作。这个代码参考上面微博。

然后就是在项目中需要发送邮件的地方写具体的方法,写一个发送邮件的方法,将要发送的信息保存到实体类Mail中,然后调用mailUtil.send(mail)方法。

此时代码基本完成,开始测试,启动tomcat,设置条件触发发送邮件的任务。此时可能不会成功,需要你的邮箱设置POP3/SMTP/IMAP服务,此时去对应邮箱网站设置即可,按要求设置开启SMTP服务。

然后基本就可以成功了,有些邮件如腾讯还需开启SSL,在MailUtil中添加email.setSSLOnConnect(true);即可。

这时我的可以发邮件了,但是收到的却是这样的:


内容:

 
  
------=_Part_0_1924255560.1481597597417
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E5=90=8C=E6=AD=A5=E8=B4=A6=E6=88=B7=E4=
=B8=AD=E5=BF=83=E5=A4=B1=E8=B4=A5:=E8=B4=A6=E6=88=B7=E4=B8=AD=E5=BF=83=E8=BF=
=94=E5=9B=9E:{resultMsg=3D=E5=90=8C=E6=AD=A5=E8=B4=A6=E6=88=B7=E4=B8=AD=E5=
=BF=83=E5=A4=B1=E8=B4=A5, resultCode=3Dx}=E5=AE=A1=E6=A0=B8=E6=B5=81=E6=B0=
=B4:.UserVerify@48303e79[VerifyId=3D66,A=
ccountId=3D7,VerifyType=3D1,VerifyContent=3D=E6=98=B5=E7=A7=B0=E4=BF=AE=E6=
=94=B97,Status=3D1,OperatorId=3D1,OpTime=3DThu Dec 01 15:09:32 CST 2016]
------=_Part_0_1924255560.1481597597417--

此时百度了很久,找到了一篇博客:

http://blog.csdn.net/zljjava/article/details/49149443

这里有类似的问题。是jar包冲突导致的。

于是在自己的项目中找到 axis2-kernel,这个依赖引入了一些相关的jar包如geronimo-javamail_1.4_spec等一些没用的jar,但会引起JavaMail冲突。

在pom文件中剔除相关jar包,如下


    org.apache.axis2
     axis2-kernel
      
         
		    org.apache.geronimo.specs
		    geronimo-javamail_1.4_spec
           
           
		    org.apache.geronimo.specs
		    geronimo-activation_1.1_spec
           
           
		    org.apache.geronimo.specs
		    geronimo-jms_1.1_spec
           
           
		    org.apache.geronimo.specs
		    geronimo-stax-api_1.0_spec
           
           
 
  
            org.apache.axis2
            axis2-adb
              
               
		  		 org.apache.geronimo.specs
		        geronimo-activation_1.1_spec
               
               
		         org.apache.geronimo.specs
		         geronimo-stax-api_1.0_spec
               
              
 
然后,再测试就可以了,能正常显示邮件了。

你可能感兴趣的:(javaMail)