项目是用maven管理,首先导入以下依赖
<dependency>
<groupId>org.apache.commons</groupId><artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>
会自动帮你导入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包,如下
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-javamail_1.4_spec</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-activation_1.1_spec</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jms_1.1_spec</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-stax-api_1.0_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-adb</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-activation_1.1_spec</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-stax-api_1.0_spec</artifactId>
</exclusion>
</exclusions>
</dependency>
然后,再测试就可以了,能正常显示邮件了。