JavaMail与Spring集成开发
spring框架集成JavaMail的主要包
<a href="https://s5.51cto.com/wyfs02/M02/07/01/wKiom1nCAtrgYnbOAACOw8NSxuI820.png" target="_blank"></a>
2.mail.properties
<code>mail.smtp.host=smtp.</code><code>163</code><code>.com</code>
<code>mail.smtp.auth=</code><code>true</code>
<code>mail.username=</code><code>15511111111</code>
<code>mail.password=</code><code>123</code>
<code>mail.from=</code><code>15511111111</code><code>@163</code><code>.com</code>
3.使用spring配置(applicationContext-mail.xml)
<code><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"UTF-8"</code><code>?></code>
<code><beans xmlns=</code><code>"http://www.springframework.org/schema/beans"</code>
<code> </code><code>xmlns:xsi=</code><code>"http://www.w3.org/2001/XMLSchema-instance"</code>
<code> </code><code>xmlns:p=</code><code>"http://www.springframework.org/schema/p"</code>
<code> </code><code>xmlns:context=</code><code>"http://www.springframework.org/schema/context"</code>
<code> </code><code>xmlns:tx=</code><code>"http://www.springframework.org/schema/tx"</code>
<code> </code><code>xmlns:aop=</code><code>"http://www.springframework.org/schema/aop"</code>
<code> </code><code>xsi:schemaLocation="http:</code><code>//www.springframework.org/schema/beans </code>
<code> </code><code>http:</code><code>//www.springframework.org/schema/beans/spring-beans.xsd </code>
<code> </code><code>http:</code><code>//www.springframework.org/schema/aop </code>
<code> </code><code>http:</code><code>//www.springframework.org/schema/aop/spring-aop.xsd </code>
<code> </code><code>http:</code><code>//www.springframework.org/schema/tx </code>
<code> </code><code>http:</code><code>//www.springframework.org/schema/tx/spring-tx.xsd </code>
<code> </code><code>http:</code><code>//www.springframework.org/schema/context </code>
<code> </code><code>http:</code><code>//www.springframework.org/schema/context/spring-context.xsd"></code>
<code> </code>
<code> </code><code><description>JavaMail配置文件</description></code>
<code> </code><code><!-- 加载mail.properties文件 --></code>
<code> </code><code><context:property-placeholder location=</code><code>"classpath:mail.properties"</code><code>/></code>
<code> </code><code><!-- 配置一个简单邮件对象 --></code>
<code> </code><code><bean id=</code><code>"mailMessage"</code> <code>class</code><code>=</code><code>"org.springframework.mail.SimpleMailMessage"</code><code>></code>
<code> </code><code><property name=</code><code>"from"</code> <code>value=</code><code>"${mail.from}"</code><code>></property></code>
<code> </code><code></bean></code>
<code> </code><code><!-- 邮件的发送对象 --></code>
<code> </code><code><bean id=</code><code>"mailSender"</code> <code>class</code><code>=</code><code>"org.springframework.mail.javamail.JavaMailSenderImpl"</code><code>></code>
<code> </code><code><property name=</code><code>"host"</code> <code>value=</code><code>"${mail.smtp.host}"</code><code>></property></code>
<code> </code><code><property name=</code><code>"username"</code> <code>value=</code><code>"${mail.username}"</code><code>></property></code>
<code> </code><code><property name=</code><code>"password"</code> <code>value=</code><code>"${mail.password}"</code><code>></property></code>
<code> </code><code><property name=</code><code>"defaultEncoding"</code> <code>value=</code><code>"UTF-8"</code><code>></property></code>
<code> </code><code><!-- 邮件发送相关的配置信息 --></code>
<code> </code><code><property name=</code><code>"javaMailProperties"</code> <code>></code>
<code> </code><code><props></code>
<code> </code><code><prop key=</code><code>"mail.smtp.auth"</code><code>>${mail.smtp.auth}</prop></code>
<code> </code><code><prop key=</code><code>"mail.debug"</code><code>></code><code>true</code><code></prop></code>
<code> </code><code><prop key=</code><code>"mail.smtp.timeout"</code><code>></code><code>0</code><code></prop></code>
<code> </code><code></props></code>
<code> </code><code></property></code>
<code></beans></code>
4.发送简单邮件代码
<code>public</code> <code>void</code> <code>testJavaMail() </code><code>throws</code> <code>Exception{</code>
<code> </code><code>ApplicationContext ac = </code><code>new</code> <code>ClassPathXmlApplicationContext(</code><code>"classpath:applicationContext-mail.xml"</code><code>);</code>
<code> </code>
<code> </code><code>SimpleMailMessage message = (SimpleMailMessage) ac.getBean(</code><code>"mailMessage"</code><code>);</code><code>//加载简单邮件对象</code>
<code> </code><code>JavaMailSender sender = (JavaMailSender) ac.getBean(</code><code>"mailSender"</code><code>); </code><code>//得到邮件的发送对象,专门用于邮件发送</code>
<code> </code><code>//设置简单邮件对象的属性</code>
<code> </code><code>message.setSubject(</code><code>"spring与javamail的测试"</code><code>);</code><code>//主题</code>
<code> </code><code>message.setText(</code><code>"hello,spring and javamail "</code><code>);</code><code>//内容</code>
<code> </code><code>message.setTo(</code><code>"[email protected]"</code><code>);</code><code>//收件箱</code>
<code> </code><code>//发送邮件</code>
<code> </code><code>sender.send(message);</code>
<code>}</code>
5.发送带有图片和带附件的邮件
<code>//发送一个允许带图片,同时带附件的邮件</code>
<code> </code><code>MimeMessage message = sender.createMimeMessage();</code><code>//创建一封允许带图片,同时带附件的邮件对象</code>
<code> </code><code>//为了更好的操作MimeMessage对象,借用一个工具类来操作它</code>
<code> </code><code>MimeMessageHelper helper = </code><code>new</code> <code>MimeMessageHelper(message, </code><code>true</code><code>);</code>
<code> </code><code>//通过工具类设置主题,内容,图片,附件</code>
<code> </code><code>helper.setFrom(</code><code>"[email protected]"</code><code>);</code>
<code> </code><code>helper.setTo(</code><code>"[email protected]"</code><code>);</code>
<code> </code><code>helper.setSubject(</code><code>"这是来自x网的一个请求"</code><code>);</code>
<code> </code><code>helper.setText(</code><code>"<html><head></head><body><h1>hello!!baby </h1>"</code>
<code> </code><code>+</code><code>"<a href=http://www.baidu.com>去百度</a>"</code> <code>+ </code><code>"<img src=cid:image/></body></html>"</code><code>,</code><code>true</code><code>);//第二个参数说明内容要解析为html代码</code>
<code> </code><code>//添加图片</code>
<code> </code><code>FileSystemResource resource = </code><code>new</code> <code>FileSystemResource(</code><code>new</code> <code>File(</code><code>"E:\\原理分析.png"</code><code>));</code>
<code> </code><code>helper.addInline(</code><code>"image"</code><code>, resource);</code>
<code> </code><code>/*JavaMailSenderImpl mailSender = (JavaMailSenderImpl) ac.getBean("mailSender");</code>
<code> </code><code>//3.创建一封允许带附件的邮件对象</code>
<code> </code><code>MimeMessage mimeMessage = mailSender.createMimeMessage();//创建出允许带附件的邮件对象</code>
<code> </code><code>//4.创建出一个用于操作MimeMessage的帮助类的对象</code>
<code> </code><code>MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);</code>
<code> </code><code>//5.设置邮件的相关内容 (发送者,拼接者,主题,内容 )</code>
<code> </code><code>helper.setFrom("[email protected]");</code>
<code> </code><code>helper.setTo("[email protected]");</code>
<code> </code><code>helper.setSubject("带图片和附件的邮件测试");</code>
<code> </code><code>helper.setText("<html><head></head><body><h1>hello!!spring image html mail</h1>"</code>
<code> </code><code>+"<a href=http://www.itheima.com>去百度</a>" + "<img src=cid:image/></body></html>", true);//cid:是固定的,后面的image是自己定义的</code>
<code> </code><code>//指定image所在的位置(是指本地电脑)</code>
<code> </code><code>FileSystemResource img = new FileSystemResource(new File("E:/原理分析.png"));//将本地的图片转化成一个图片资源 </code>
<code> </code><code>helper.addInline("image", img);//image的参数来自上面cid的取值</code>
<code> </code><code>//发送时带附件</code>
<code> </code><code>FileSystemResource zipResource = new FileSystemResource(new File("E:/javamail1_4_4.zip"));</code>
<code> </code><code>helper.addAttachment("javamail1_4_4.zip", zipResource);*/</code>
<code> </code><code>//发送邮件</code>
<code> </code><code>//mailSender.send(mimeMessage);</code>
项目中使用spring中的JavaMail工具类
01.需要在类中注入相关对象
<code>private</code> <code>SimpleMailMessage mailMessage;</code>
<code>private</code> <code>JavaMailSender mailSender;</code>
<code>public</code> <code>void</code> <code>setMailMessage(SimpleMailMessage mailMessage) {</code>
<code> </code><code>this</code><code>.mailMessage = mailMessage;</code>
<code>public</code> <code>void</code> <code>setMailSender(JavaMailSender mailSender) {</code>
<code> </code><code>this</code><code>.mailSender = mailSender;</code>
02.在spring配置文件中配置
<code><bean id=</code><code>"userService"</code> <code>class</code><code>=</code><code>"com.my.qb.service.impl.UserServiceImpl"</code><code>></code>
<code> </code><code><property name=</code><code>"baseDao"</code> <code>ref=</code><code>"baseDao"</code><code>></property></code>
<code> </code><code><property name=</code><code>"mailMessage"</code> <code>ref=</code><code>"mailMessage"</code><code>></property></code>
<code> </code><code><property name=</code><code>"mailSender"</code> <code>ref=</code><code>"mailSender"</code><code>></property></code>
03.实现功能(比如:在注册的时候,发送邮件,邮件可能发送不成功,但要保证注册完成)
<code>/**</code>
<code>* 新增用户</code>
<code>*/</code>
<code>public</code> <code>void</code> <code>saveOrUpdate(</code><code>final</code> <code>User entity) {</code>
<code> </code><code>if</code><code>(UtilFuns.isEmpty(entity.getId())){</code>
<code> </code><code>//新增</code>
<code> </code><code>String id = UUID.randomUUID().toString();</code>
<code> </code><code>entity.setId(id);</code>
<code> </code><code>entity.getUserinfo().setId(id);</code>
<code> </code>
<code> </code><code>//补充Shiro添加后的bug</code>
<code> </code><code>entity.setPassword(Encrypt.md5(SysConstant.DEFAULT_PASS, entity.getUserName()));</code>
<code> </code><code>baseDao.saveOrUpdate(entity);</code><code>//记录保存</code>
<code> </code><code>//独立的比较费时的,都交给线程来做</code>
<code> </code><code>//spring集成javaMail</code>
<code> </code><code>Thread th = </code><code>new</code> <code>Thread(</code><code>new</code> <code>Runnable() {</code>
<code> </code><code>public</code> <code>void</code> <code>run() {</code>
<code> </code><code>try</code> <code>{</code>
<code> </code><code>mailMessage.setTo(entity.getUserinfo().getEmail());</code>
<code> </code><code>mailMessage.setSubject(</code><code>"新员工入职的系统账户通知"</code><code>);</code>
<code> </code><code>mailMessage.setText(</code><code>"欢迎您加入本集团,您的用户名:"</code><code>+entity.getUserName()+</code><code>",初始密码:"</code><code>+SysConstant.DEFAULT_PASS);</code>
<code> </code>
<code> </code><code>mailSender.send(mailMessage);</code>
<code> </code><code>} </code><code>catch</code> <code>(Exception e) {</code>
<code> </code><code>e.printStackTrace();</code>
<code> </code><code>}</code>
<code> </code><code>}</code>
<code> </code><code>});</code>
<code> </code><code>th.start();</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>//修改</code>
<code> </code><code>baseDao.saveOrUpdate(entity);</code>
<code> </code><code>}</code>
本文转自 叫我北北 51CTO博客,原文链接:http://blog.51cto.com/qinbin/1967128