使用spring实现邮件的发送实例(含测试,源码,注释)

此篇主要讲的是使用spring配置实现邮件发送,与之前的底层实现简便了不少,只需要几个配置就可以了,那么请往下看:

先写个接口

 /** 
* @Title: IMailserdService.java 
* @Package org.service 
* @Description: TODO该方法的主要作用: 
* @author A18ccms A18ccms_gmail_com 
* @date 2017-5-30 上午10:36:34 
* @version V1.0 
*/ 
package org.service; 
 
 /** 
 *  
 * 项目名称:spring_Schop8 
 * 类名称:IMailserdService 
 * 类描述: 
 * 创建人:Mu Xiongxiong 
 * 修改备注: 
 * @version  
 *  
 */ 
public interface IMailsendService { 
 
 /** 
  * 
 * @Title: sendMessage 
 * @Description: 该方法的主要作用:发送邮件 
 * @param 设定文件 
 * @return 返回类型:void 
 * @throws 
  */ 
 void sendMessage(); 
} 

然后在写个实现该接口的类:

 /** 
* @Title: AttMailsendServiceImpl.java 
* @Package org.service.impl 
* @Description: TODO该方法的主要作用: 
* @author A18ccms A18ccms_gmail_com 
* @date 2017-5-30 上午11:12:02 
* @version V1.0 
*/ 
package org.service.impl; 
 
import java.io.IOException; 
 
import javax.mail.MessagingException; 
import javax.mail.internet.MimeMessage; 
 
import org.service.IMailsendService; 
import org.springframework.core.io.ClassPathResource; 
import org.springframework.mail.javamail.JavaMailSender; 
import org.springframework.mail.javamail.MimeMessageHelper; 
 
 /** 
 *  
 * 项目名称:spring_Schop8 
 * 类名称:AttMailsendServiceImpl 
 * 类描述: 使用spring实现对邮件的发送 
 * 创建人:Mu Xiongxiong  
 * 修改备注: 
 * @version  
 *  
 */ 
public class AttMailsendServiceImpl implements IMailsendService { 
 
 private JavaMailSender javaMailSender; 
  
 /**(非 Javadoc) 
  * 

Title: sendMessage

*

Description(描述):发送带附件的邮件

* @see org.service.IMailsendService#sendMessage() */ @Override public void sendMessage() { MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper; try { helper = new MimeMessageHelper(message,true,"utf-8"); helper.setFrom("[email protected]"); helper.setTo("[email protected]"); helper.setSubject("带附件的邮件"); //普通格式的 //helper.setText("发送一个附件内容!百度搜索"); //html格式的 helper.setText("发送一个附件内容!百度搜索",true); //添加附件1 ClassPathResource file1 = new ClassPathResource("/org/doc/doc.txt"); helper.addAttachment(file1.getFilename(),file1.getFile()); //添加附件2 ClassPathResource file2 = new ClassPathResource("/org/doc/text.txt"); helper.addAttachment(file2.getFilename(), file2.getFile()); javaMailSender.send(message); } catch (MessagingException e) { // TODO 异常执行块! e.printStackTrace(); } catch (IOException e) { // TODO 异常执行块! e.printStackTrace(); } } public JavaMailSender getJavaMailSender() { return javaMailSender; } public void setJavaMailSender(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } }

上面的这个类还可以发送带附件的邮件,里面含两个附件(文件),我弄上来吧:

使用spring实现邮件的发送实例(含测试,源码,注释)_第1张图片

还有一种是使用模板发送带html格式的邮件:

我直接上实现类:

 /** 
* @Title: CreateMatterServiceImpl.java 
* @Package org.service.impl 
* @Description: TODO该方法的主要作用: 
* @author A18ccms A18ccms_gmail_com 
* @date 2017-5-30 上午11:46:53 
* @version V1.0 
*/ 
package org.service.impl; 
 
import java.io.IOException; 
import java.util.HashMap; 
import java.util.Map; 
 
import javax.mail.MessagingException; 
import javax.mail.internet.MimeMessage; 
 
import org.service.IMailsendService; 
import org.springframework.mail.javamail.JavaMailSender; 
import org.springframework.mail.javamail.MimeMessageHelper; 
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils; 
 
import freemarker.template.Configuration; 
import freemarker.template.Template; 
import freemarker.template.TemplateException; 
 
 /** 
 *  
 * 项目名称:spring_Schop8 
 * 类名称:CreateMatterServiceImpl 
 * 类描述: 
 * 创建人:Mu Xiongxiong 
 * 修改备注: 
 * @version  
 *  
 */ 
public class CreateMatterServiceImpl implements IMailsendService { 
 
 private JavaMailSender javaMailSender; 
 private Configuration configuration; 
  
 /**(非 Javadoc) 
  * 

Title: sendMessage

*

Description(描述):使用后模板发送邮件

* @see org.service.IMailsendService#sendMessage() */ @Override public void sendMessage() { MimeMessage message = javaMailSender.createMimeMessage(); try { MimeMessageHelper helper = new MimeMessageHelper(message,true,"UTF-8"); helper.setFrom("[email protected]"); helper.setTo("[email protected]"); helper.setSubject("使用模板进行发送邮件"); helper.setText(getText(),true); //从模板里面读取 javaMailSender.send(message); } catch (MessagingException e) { // TODO 异常执行块! e.printStackTrace(); } } //读取模板 private String getText(){ String txt = ""; try { Template template = configuration.getTemplate("mail.ftl"); //通过map传递动态数据 Map map = new HashMap(); map.put("username","雄雄"); //解析模板文件 txt = FreeMarkerTemplateUtils.processTemplateIntoString(template,map); } catch (IOException e) { // TODO 异常执行块! e.printStackTrace(); } catch (TemplateException e) { // TODO 异常执行块! e.printStackTrace(); } return txt; } public JavaMailSender getJavaMailSender() { return javaMailSender; } public void setJavaMailSender(JavaMailSender javaMailSender) { this.javaMailSender = javaMailSender; } public Configuration getConfiguration() { return configuration; } public void setConfiguration(Configuration configuration) { this.configuration = configuration; } }

模板文件如下:

使用spring实现邮件的发送实例(含测试,源码,注释)_第2张图片

然后在看看spring里面是怎么配置的呢?

 
 
 
  
  
   
   
   
   
   
   
   
    
    true 
    
   
  
  
  
  
   
   
   
   
    
    UTF-8 
    
   
  
  
  
   
  
  
  
   
  
  
  
   
   
  
  
 

当前时间已经是00点多了,又累又困,我就不详细解释这个applicationContexct.xml里面的内容了,里面有注释,看不懂的可以评论,我第一时间改进!

接着我们测试一下:

TestMail:

package org.test; 
 
import org.junit.Test; 
import org.service.IMailsendService; 
import org.service.impl.Mail; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext; 
 
public class TestMail { 
  
 @Test 
 public void testMail() { 
  ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 
  //简单邮件 
  //IMailsendService mailsendService=(IMailsendService) ctx.getBean("simpleMailsendService"); 
   
  //复杂邮件 
  //IMailsendService mailsendService=(IMailsendService) ctx.getBean("AttMailsendService"); 
   
  //使用模板的文件 
  IMailsendService mailsendService=(IMailsendService) ctx.getBean("createMatterService"); 
  mailsendService.sendMessage(); 
  System.out.println("发送成功!"); 
 } 
  
  
} 

注明一下:简单邮件是直接发的文本内容,复杂邮件是包含html格式和附件的,模板发送是html格式的另一种方式,我们来看看运行的结果:

先看看带附件,还有html格式的邮件:

使用spring实现邮件的发送实例(含测试,源码,注释)_第3张图片

接下来是简单邮件:

使用spring实现邮件的发送实例(含测试,源码,注释)_第4张图片

接下来的一种是使用模板发送邮件,用户名是动态上去的:

使用spring实现邮件的发送实例(含测试,源码,注释)_第5张图片

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(使用spring实现邮件的发送实例(含测试,源码,注释))