开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发、多个附件发送等需求。如果需要可以参照如下源代码进行修改完成。
  1. POM文件配置

     <dependencies>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>4.1.6.RELEASE</version>
    </dependency>
    <dependency>
    <groupId>javax.mail</groupId>
    <artifactId>mail</artifactId>
    <version>1.4.7</version>
    </dependency>
    </dependencies>

    POM dependencies

  2. spring 配置
     <!-- Production implementation of the JavaMailSender interface, supporting
    both JavaMail MimeMessages and Spring SimpleMailMessages -->
    <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
    <property name="host" value="smtp.gmail.com" />
    <property name="port" value="587" />
    <property name="username" value="<!-- Provide your Gmail ID -->" />
    <property name="password" value="<!-- Provide your Gmail Password -->" /> <!-- The name of the property, following JavaBean naming conventions -->
    <property name="javaMailProperties">
    <props>
    <prop key="mail.transport.protocol">smtp</prop>
    <prop key="mail.smtp.auth">true</prop>
    <prop key="mail.smtp.starttls.enable">true</prop>
    <prop key="mail.debug">true</prop>
    </props>
    </property>
    </bean>

    spring 配置

  3. 邮件发送接口
     /**
    * Copyright (c) 2015, www.wisdombud.com
    * All Rights Reserved.
    */
    package com.wisdombud.wisdomhr.common.srv; import java.io.FileNotFoundException; import javax.mail.MessagingException; /**
    * 功能: 邮件发送接口.<br/>
    * date: 2015年8月24日 上午9:53:05 <br/>
    *
    * @author joseph
    * @version
    */
    public interface MailSenderSrv {
    /**
    * 功能: 发普通邮件,msgBody是普通的文本.<br/>
    * date: 2015年8月24日 上午9:57:19 <br/>
    *
    * @author joseph
    * @param toAddress
    * @param fromAddress
    * @param subject
    * @param msgBody
    */
    void sendEmail(String toAddress, String fromAddress, String subject, String msgBody); /**
    * 功能: 发html邮件或者普通邮件,msgBody是html文本或者普通文本.<br/>
    * MimeMessage 消息发送.<br/>
    * date: 2015年8月24日 上午9:57:19 <br/>
    *
    * @author joseph
    * @param toAddress
    * @param fromAddress
    * @param subject
    * @param msgBody
    * @throws MessagingException
    */
    void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody) throws MessagingException; /**
    * 功能: 发html邮件或者普通邮件,msgBody是html文本或者普通文本,带附件.<br/>
    * MimeMessage 消息发送.<br/>
    * date: 2015年8月24日 上午9:57:19 <br/>
    *
    * @author joseph
    * @param toAddress
    * @param fromAddress
    * @param subject
    * @param msgBody
    * @throws MessagingException
    * @throws FileNotFoundException
    */
    void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody, String filePath)
    throws MessagingException, FileNotFoundException; /**
    * 功能: 发html邮件或者普通邮件,msgBody是html文本或者普通文本,带附件.<br/>
    * MimeMessage 消息发送.<br/>
    * date: 2015年8月24日 上午9:57:19 <br/>
    *
    * @author joseph
    * @param toAddress
    * @param fromAddress
    * @param subject
    * @param htmlBody
    * @param filePath
    * @param fileName
    * @throws MessagingException
    * @throws FileNotFoundException
    */
    void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody, String filePath,
    String fileName) throws MessagingException, FileNotFoundException;
    }

    邮件发送接口代码

  4. 邮件发送实现
     /**
    * Copyright (c) 2015, www.wisdombud.com
    * All Rights Reserved.
    */
    package com.wisdombud.wisdomhr.common.srv; import java.io.File;
    import java.io.FileNotFoundException; import javax.mail.MessagingException;
    import javax.mail.internet.MimeMessage; import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.mail.SimpleMailMessage;
    import org.springframework.mail.javamail.JavaMailSender;
    import org.springframework.mail.javamail.MimeMessageHelper;
    import org.springframework.stereotype.Service; /**
    * 功能: 邮件发送实现.<br/>
    * date: 2015年8月24日 上午10:07:01 <br/>
    *
    * @author joseph
    * @version
    */
    @Service("mailSenderSrv")
    public class MailSenderSrvImpl implements MailSenderSrv { @Autowired
    private JavaMailSender mailSender; /**
    * @see com.wisdombud.wisdomhr.common.srv.MailSenderSrv#sendEmail(java.lang.String,
    * java.lang.String, java.lang.String, java.lang.String)
    */ @Override
    public void sendEmail(String toAddress, String fromAddress, String subject, String msgBody) {
    SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
    simpleMailMessage.setFrom(fromAddress);
    simpleMailMessage.setTo(toAddress);
    simpleMailMessage.setSubject(subject);
    simpleMailMessage.setText(msgBody);
    mailSender.send(simpleMailMessage);
    } /**
    * @throws MessagingException
    * @see com.wisdombud.wisdomhr.common.srv.MailSenderSrv#sendHtmlEmail(java.lang.String,
    * java.lang.String, java.lang.String, java.lang.String)
    */ @Override
    public void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody)
    throws MessagingException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8");
    helper.setTo(toAddress);
    helper.setFrom(fromAddress);
    helper.setText(htmlBody, true);
    helper.setSubject(subject); mailSender.send(message); } /**
    * @throws MessagingException
    * @throws FileNotFoundException
    * @see com.wisdombud.wisdomhr.common.srv.MailSenderSrv#sendHtmlEmail(java.lang.String,
    * java.lang.String, java.lang.String, java.lang.String,
    * java.lang.String)
    */ @Override
    public void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody, String filePath)
    throws MessagingException, FileNotFoundException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    helper.setTo(toAddress);
    helper.setFrom(fromAddress);
    helper.setText(htmlBody, true);
    helper.setSubject(subject);
    File file = new File(filePath);
    if (!file.exists()) {
    throw new FileNotFoundException("找不到附件:" + filePath);
    }
    helper.addAttachment(file.getName(), file);
    mailSender.send(message);
    } /**
    * @throws MessagingException
    * @throws FileNotFoundException
    * @see com.wisdombud.wisdomhr.common.srv.MailSenderSrv#sendHtmlEmail(java.lang.String,
    * java.lang.String, java.lang.String, java.lang.String,
    * java.lang.String)
    */ @Override
    public void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody, String filePath,
    String fileName) throws MessagingException, FileNotFoundException {
    MimeMessage message = mailSender.createMimeMessage();
    MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    helper.setTo(toAddress);
    helper.setFrom(fromAddress);
    helper.setText(htmlBody, true);
    helper.setSubject(subject);
    File file = new File(filePath);
    if (!file.exists()) {
    throw new FileNotFoundException("找不到附件:" + filePath);
    }
    helper.addAttachment(fileName, file);
    mailSender.send(message);
    }
    }

    邮件发送实现代码

  5. 邮件发送测试代码(需要自己替换邮箱)
     package com.wisdombud.wisdomhr.test.srv;
    
     import java.io.FileNotFoundException;
    
     import javax.mail.MessagingException;
    
     import org.junit.Test;
    import org.springframework.beans.factory.annotation.Autowired; import com.wisdombud.wisdomhr.common.srv.MailSenderSrv;
    import com.wisdombud.wisdomhr.test.base.AbstractTransactionContextTest; public class MailSrvTest extends AbstractTransactionContextTest {
    @Autowired
    private MailSenderSrv srv; @Test
    public void testTextMail() {
    String from = "test@163.com";
    String to = "test@163.com";
    String subject = "测试主题";
    String text = "测试内容";
    this.srv.sendEmail(to, from, subject, text);
    } @Test
    public void testHtmlMail() {
    String from = "test@163.com";
    String to = "test@163.com";
    String subject = "测试主题";
    String text = "<html><a href=\"www.baidu.com\">百度</a></html>";
    try {
    this.srv.sendHtmlEmail(to, from, subject, text);
    } catch (MessagingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } @Test
    public void testHtmlMailWithAttach() {
    String from = "test@163.com";
    String to = "test@163.com";
    String subject = "测试主题";
    String text = "<html><a href=\"www.baidu.com\">百度</a></html>";
    String filePath = "d://1.sql";
    try {
    this.srv.sendHtmlEmail(to, from, subject, text, filePath);
    } catch (MessagingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } @Test
    public void testHtmlMailWithAttachAndName() {
    String from = "test@163.com";
    String to = "test@163.com";
    String subject = "测试主题";
    String text = "<html><a href=\"www.baidu.com\">百度</a></html>";
    String filePath = "d://1.sql";
    String fileName = "haha.sql";
    try {
    this.srv.sendHtmlEmail(to, from, subject, text, filePath, fileName);
    } catch (MessagingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } }

    邮件发送测试代码

 

最新文章

  1. jquery mobile开发中footer一直在底部的设置方法
  2. 图像分割算法-GraphSeg算法
  3. XAMPP Apache服务器解析php页面汉字乱码的解决
  4. Linux 命令整理 —— 用户管理
  5. 【数论-数位统计】UVa 11076 - Add Again
  6. 2015长春 HDU 5534 Partial Tree
  7. URL重写:RewriteCond指令与RewriteRule 指令格式(转)
  8. XML新手入门 创建构造良好的XML(1)
  9. linux下串口通信与管理
  10. 允许mysql用户从远程登录
  11. Android的ListView异步加载图片时,错位、重复、闪烁问题的分析及解决方法
  12. vue Echarts 柱状图点击事件
  13. day11(函数参数,函数对象,打散机制,函数嵌套调用)
  14. Github 入门(“趣考网络”学习第一步)
  15. 《jQuery精品教程视频》视频目录
  16. 【问题】用ant编译时,提示编码utf为不可映射字符
  17. 用友iuap云运维平台支持基于K8s的微服务架构
  18. FIDDLER的使用方法及技巧总结(连载一)FIDDLER快速入门及使用场景
  19. Redis的内存回收机制
  20. OC 线程操作3 - NSOperation 实现线程间通信

热门文章

  1. python 爬虫(四)
  2. Beta工作比例(Transcend)
  3. 【刷题笔记】--lintcode木头加工(java)
  4. C#开发笔记
  5. sass基础用法
  6. css3的动画特性
  7. C# 使用access,报错:标准表达式中数据类型不匹配
  8. 关于textarea中换行、回车、空格的识别与处理
  9. js获取HTTP的请求头信息
  10. 输出日志实例改成用Spring的AOP来实现