java spring 邮件发送

  开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发、多个附件发送等需求。如果需要可以参照如下源代码进行修改完成。
  1. POM文件配置
     1 <dependencies>
     2         <dependency>
     3             <groupId>org.springframework</groupId>
     4             <artifactId>spring-context</artifactId>
     5             <version>4.1.6.RELEASE</version>
     6         </dependency>
     7         <dependency>
     8             <groupId>org.springframework</groupId>
     9             <artifactId>spring-context-support</artifactId>
    10             <version>4.1.6.RELEASE</version>
    11         </dependency>
    12         <dependency>
    13             <groupId>javax.mail</groupId>
    14             <artifactId>mail</artifactId>
    15             <version>1.4.7</version>
    16         </dependency>
    17     </dependencies>
    POM dependencies
  2. spring 配置
     1 <!-- Production implementation of the JavaMailSender interface, supporting 
     2         both JavaMail MimeMessages and Spring SimpleMailMessages -->
     3     <bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
     4         <property name="host" value="smtp.gmail.com" />
     5         <property name="port" value="587" />
     6         <property name="username" value="<!-- Provide your Gmail ID -->" />
     7         <property name="password" value="<!-- Provide your Gmail Password -->" />
     8  
     9         <!-- The name of the property, following JavaBean naming conventions -->
    10         <property name="javaMailProperties">
    11             <props>
    12                 <prop key="mail.transport.protocol">smtp</prop>
    13                 <prop key="mail.smtp.auth">true</prop>
    14                 <prop key="mail.smtp.starttls.enable">true</prop>
    15                 <prop key="mail.debug">true</prop>
    16             </props>
    17         </property>
    18     </bean>
    spring 配置
  3. 邮件发送接口
     1 /**
     2  * Copyright (c) 2015, www.wisdombud.com
     3  * All Rights Reserved.
     4  */
     5 package com.wisdombud.wisdomhr.common.srv;
     6 
     7 import java.io.FileNotFoundException;
     8 
     9 import javax.mail.MessagingException;
    10 
    11 /**
    12  * 功能: 邮件发送接口.<br/>
    13  * date: 2015年8月24日 上午9:53:05 <br/>
    14  *
    15  * @author joseph
    16  * @version
    17  */
    18 public interface MailSenderSrv {
    19     /**
    20      * 功能: 发普通邮件,msgBody是普通的文本.<br/>
    21      * date: 2015年8月24日 上午9:57:19 <br/>
    22      *
    23      * @author joseph
    24      * @param toAddress
    25      * @param fromAddress
    26      * @param subject
    27      * @param msgBody
    28      */
    29     void sendEmail(String toAddress, String fromAddress, String subject, String msgBody);
    30 
    31     /**
    32      * 功能: 发html邮件或者普通邮件,msgBody是html文本或者普通文本.<br/>
    33      * MimeMessage 消息发送.<br/>
    34      * date: 2015年8月24日 上午9:57:19 <br/>
    35      *
    36      * @author joseph
    37      * @param toAddress
    38      * @param fromAddress
    39      * @param subject
    40      * @param msgBody
    41      * @throws MessagingException
    42      */
    43     void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody) throws MessagingException;
    44 
    45     /**
    46      * 功能: 发html邮件或者普通邮件,msgBody是html文本或者普通文本,带附件.<br/>
    47      * MimeMessage 消息发送.<br/>
    48      * date: 2015年8月24日 上午9:57:19 <br/>
    49      *
    50      * @author joseph
    51      * @param toAddress
    52      * @param fromAddress
    53      * @param subject
    54      * @param msgBody
    55      * @throws MessagingException
    56      * @throws FileNotFoundException
    57      */
    58     void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody, String filePath)
    59             throws MessagingException, FileNotFoundException;
    60 
    61     /**
    62      * 功能: 发html邮件或者普通邮件,msgBody是html文本或者普通文本,带附件.<br/>
    63      * MimeMessage 消息发送.<br/>
    64      * date: 2015年8月24日 上午9:57:19 <br/>
    65      *
    66      * @author joseph
    67      * @param toAddress
    68      * @param fromAddress
    69      * @param subject
    70      * @param htmlBody
    71      * @param filePath
    72      * @param fileName
    73      * @throws MessagingException
    74      * @throws FileNotFoundException
    75      */
    76     void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody, String filePath,
    77             String fileName) throws MessagingException, FileNotFoundException;
    78 }
    邮件发送接口代码
  4. 邮件发送实现
      1 /**
      2  * Copyright (c) 2015, www.wisdombud.com
      3  * All Rights Reserved.
      4  */
      5 package com.wisdombud.wisdomhr.common.srv;
      6 
      7 import java.io.File;
      8 import java.io.FileNotFoundException;
      9 
     10 import javax.mail.MessagingException;
     11 import javax.mail.internet.MimeMessage;
     12 
     13 import org.springframework.beans.factory.annotation.Autowired;
     14 import org.springframework.mail.SimpleMailMessage;
     15 import org.springframework.mail.javamail.JavaMailSender;
     16 import org.springframework.mail.javamail.MimeMessageHelper;
     17 import org.springframework.stereotype.Service;
     18 
     19 /**
     20  * 功能: 邮件发送实现.<br/>
     21  * date: 2015年8月24日 上午10:07:01 <br/>
     22  *
     23  * @author joseph
     24  * @version
     25  */
     26 @Service("mailSenderSrv")
     27 public class MailSenderSrvImpl implements MailSenderSrv {
     28 
     29     @Autowired
     30     private JavaMailSender mailSender;
     31 
     32     /**
     33      * @see com.wisdombud.wisdomhr.common.srv.MailSenderSrv#sendEmail(java.lang.String,
     34      *      java.lang.String, java.lang.String, java.lang.String)
     35      */
     36 
     37     @Override
     38     public void sendEmail(String toAddress, String fromAddress, String subject, String msgBody) {
     39         SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
     40         simpleMailMessage.setFrom(fromAddress);
     41         simpleMailMessage.setTo(toAddress);
     42         simpleMailMessage.setSubject(subject);
     43         simpleMailMessage.setText(msgBody);
     44         mailSender.send(simpleMailMessage);
     45     }
     46 
     47     /**
     48      * @throws MessagingException
     49      * @see com.wisdombud.wisdomhr.common.srv.MailSenderSrv#sendHtmlEmail(java.lang.String,
     50      *      java.lang.String, java.lang.String, java.lang.String)
     51      */
     52 
     53     @Override
     54     public void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody)
     55             throws MessagingException {
     56         MimeMessage message = mailSender.createMimeMessage();
     57         MimeMessageHelper helper = new MimeMessageHelper(message, "UTF-8");
     58         helper.setTo(toAddress);
     59         helper.setFrom(fromAddress);
     60         helper.setText(htmlBody, true);
     61         helper.setSubject(subject);
     62 
     63         mailSender.send(message);
     64 
     65     }
     66 
     67     /**
     68      * @throws MessagingException
     69      * @throws FileNotFoundException
     70      * @see com.wisdombud.wisdomhr.common.srv.MailSenderSrv#sendHtmlEmail(java.lang.String,
     71      *      java.lang.String, java.lang.String, java.lang.String,
     72      *      java.lang.String)
     73      */
     74 
     75     @Override
     76     public void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody, String filePath)
     77             throws MessagingException, FileNotFoundException {
     78         MimeMessage message = mailSender.createMimeMessage();
     79         MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
     80         helper.setTo(toAddress);
     81         helper.setFrom(fromAddress);
     82         helper.setText(htmlBody, true);
     83         helper.setSubject(subject);
     84         File file = new File(filePath);
     85         if (!file.exists()) {
     86             throw new FileNotFoundException("找不到附件:" + filePath);
     87         }
     88         helper.addAttachment(file.getName(), file);
     89         mailSender.send(message);
     90     }
     91 
     92     /**
     93      * @throws MessagingException
     94      * @throws FileNotFoundException
     95      * @see com.wisdombud.wisdomhr.common.srv.MailSenderSrv#sendHtmlEmail(java.lang.String,
     96      *      java.lang.String, java.lang.String, java.lang.String,
     97      *      java.lang.String)
     98      */
     99 
    100     @Override
    101     public void sendHtmlEmail(String toAddress, String fromAddress, String subject, String htmlBody, String filePath,
    102             String fileName) throws MessagingException, FileNotFoundException {
    103         MimeMessage message = mailSender.createMimeMessage();
    104         MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
    105         helper.setTo(toAddress);
    106         helper.setFrom(fromAddress);
    107         helper.setText(htmlBody, true);
    108         helper.setSubject(subject);
    109         File file = new File(filePath);
    110         if (!file.exists()) {
    111             throw new FileNotFoundException("找不到附件:" + filePath);
    112         }
    113         helper.addAttachment(fileName, file);
    114         mailSender.send(message);
    115     }
    116 }
    邮件发送实现代码
  5. 邮件发送测试代码(需要自己替换邮箱)
     1 package com.wisdombud.wisdomhr.test.srv;
     2 
     3 import java.io.FileNotFoundException;
     4 
     5 import javax.mail.MessagingException;
     6 
     7 import org.junit.Test;
     8 import org.springframework.beans.factory.annotation.Autowired;
     9 
    10 import com.wisdombud.wisdomhr.common.srv.MailSenderSrv;
    11 import com.wisdombud.wisdomhr.test.base.AbstractTransactionContextTest;
    12 
    13 public class MailSrvTest extends AbstractTransactionContextTest {
    14     @Autowired
    15     private MailSenderSrv srv;
    16 
    17     @Test
    18     public void testTextMail() {
    19         String from = "test@163.com";
    20         String to = "test@163.com";
    21         String subject = "测试主题";
    22         String text = "测试内容";
    23         this.srv.sendEmail(to, from, subject, text);
    24     }
    25 
    26     @Test
    27     public void testHtmlMail() {
    28         String from = "test@163.com";
    29         String to = "test@163.com";
    30         String subject = "测试主题";
    31         String text = "<html><a href=\"www.baidu.com\">百度</a></html>";
    32         try {
    33             this.srv.sendHtmlEmail(to, from, subject, text);
    34         } catch (MessagingException e) {
    35             // TODO Auto-generated catch block
    36             e.printStackTrace();
    37         }
    38     }
    39 
    40     @Test
    41     public void testHtmlMailWithAttach() {
    42         String from = "test@163.com";
    43         String to = "test@163.com";
    44         String subject = "测试主题";
    45         String text = "<html><a href=\"www.baidu.com\">百度</a></html>";
    46         String filePath = "d://1.sql";
    47         try {
    48             this.srv.sendHtmlEmail(to, from, subject, text, filePath);
    49         } catch (MessagingException e) {
    50             // TODO Auto-generated catch block
    51             e.printStackTrace();
    52         } catch (FileNotFoundException e) {
    53             // TODO Auto-generated catch block
    54             e.printStackTrace();
    55         }
    56     }
    57 
    58     @Test
    59     public void testHtmlMailWithAttachAndName() {
    60         String from = "test@163.com";
    61         String to = "test@163.com";
    62         String subject = "测试主题";
    63         String text = "<html><a href=\"www.baidu.com\">百度</a></html>";
    64         String filePath = "d://1.sql";
    65         String fileName = "haha.sql";
    66         try {
    67             this.srv.sendHtmlEmail(to, from, subject, text, filePath, fileName);
    68         } catch (MessagingException e) {
    69             // TODO Auto-generated catch block
    70             e.printStackTrace();
    71         } catch (FileNotFoundException e) {
    72             // TODO Auto-generated catch block
    73             e.printStackTrace();
    74         }
    75     }
    76 
    77 }
    邮件发送测试代码

     

 
posted @ 2015-08-24 10:53  每日懂一点  阅读(3244)  评论(0编辑  收藏  举报