首页 > 编程 > Java > 正文

springMVC发送邮件的简单实现

2019-11-26 12:34:00
字体:
来源:转载
供稿:网友

利用javax.mail发送邮件,图片与附件都可发送

1,Controller类

package com.web.controller.api;import javax.annotation.Resource;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.service.EmailService;@Controller@RequestMapping("api")public class EmailTaskController {  private static final Logger logger = LoggerFactory.getLogger(EmailTaskController.class);  @Resource   EmailService emailService;    @RequestMapping("sendEmailTask")  public void sendEmailTask() {    logger.info("-------------执行发送邮件START---------------");      //写入excel      //insuranceService.excelManage();      //发邮件      emailService.emailManage();        logger.info("-------------执行发送邮件END---------------");      }}

2,service类

package com.service.impl;import java.io.File;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.annotation.Resource;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import org.apache.log4j.Logger;import org.springframework.beans.factory.annotation.Value;import org.springframework.core.io.FileSystemResource;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.stereotype.Service;import com.entity.MailModel;import com.service.EmailService;import com.SimpleException;@Servicepublic class EmailServiceImpl implements EmailService {  private static Logger logger = Logger.getLogger(EmailServiceImpl.class);  private String excelPath = "d://";    @Resource  private JavaMailSender javaMailSender;    @Resource  private SimpleMailMessage simpleMailMessage;    @Override  public void emailManage(){    MailModel mail = new MailModel();    //主题    mail.setSubject("清单");         //附件    Map<String, String> attachments = new HashMap<String, String>();    attachments.put("清单.xlsx",excelPath+"清单.xlsx");    mail.setAttachments(attachments);        //内容    StringBuilder builder = new StringBuilder();    builder.append("<html><body>你好!<br />");    builder.append("    附件是个人清单。<br />");    builder.append("    其中人信息;<br />");    builder.append("</body></html>");    String content = builder.toString();        mail.setContent(content);        sendEmail(mail);  }  /**   * 发送邮件   *    * @author chenyq   * @date 2016-5-9 上午11:18:21   * @throws Exception   */  @Override  public void sendEmail(MailModel mail) {    // 建立邮件消息    MimeMessage message = javaMailSender.createMimeMessage();        MimeMessageHelper messageHelper;    try {      messageHelper = new MimeMessageHelper(message, true, "UTF-8");      // 设置发件人邮箱      if (mail.getEmailFrom()!=null) {        messageHelper.setFrom(mail.getEmailFrom());      } else {        messageHelper.setFrom(simpleMailMessage.getFrom());      }            // 设置收件人邮箱      if (mail.getToEmails()!=null) {        String[] toEmailArray = mail.getToEmails().split(";");        List<String> toEmailList = new ArrayList<String>();        if (null == toEmailArray || toEmailArray.length <= 0) {          throw new SimpleException("收件人邮箱不得为空!");        } else {          for (String s : toEmailArray) {            if (s!=null&&!s.equals("")) {              toEmailList.add(s);            }          }          if (null == toEmailList || toEmailList.size() <= 0) {            throw new SimpleException("收件人邮箱不得为空!");          } else {            toEmailArray = new String[toEmailList.size()];            for (int i = 0; i < toEmailList.size(); i++) {              toEmailArray[i] = toEmailList.get(i);            }          }        }        messageHelper.setTo(toEmailArray);      } else {        messageHelper.setTo(simpleMailMessage.getTo());      }            // 邮件主题      if (mail.getSubject()!=null) {        messageHelper.setSubject(mail.getSubject());      } else {                messageHelper.setSubject(simpleMailMessage.getSubject());      }            // true 表示启动HTML格式的邮件      messageHelper.setText(mail.getContent(), true);            // 添加图片      if (null != mail.getPictures()) {        for (Iterator<Map.Entry<String, String>> it = mail.getPictures().entrySet()            .iterator(); it.hasNext();) {          Map.Entry<String, String> entry = it.next();          String cid = entry.getKey();          String filePath = entry.getValue();          if (null == cid || null == filePath) {            throw new RuntimeException("请确认每张图片的ID和图片地址是否齐全!");          }                    File file = new File(filePath);          if (!file.exists()) {            throw new RuntimeException("图片" + filePath + "不存在!");          }                    FileSystemResource img = new FileSystemResource(file);          messageHelper.addInline(cid, img);        }      }            // 添加附件      if (null != mail.getAttachments()) {        for (Iterator<Map.Entry<String, String>> it = mail.getAttachments()            .entrySet().iterator(); it.hasNext();) {          Map.Entry<String, String> entry = it.next();          String cid = entry.getKey();          String filePath = entry.getValue();          if (null == cid || null == filePath) {            throw new RuntimeException("请确认每个附件的ID和地址是否齐全!");          }                    File file = new File(filePath);          if (!file.exists()) {            throw new RuntimeException("附件" + filePath + "不存在!");          }                    FileSystemResource fileResource = new FileSystemResource(file);          messageHelper.addAttachment(cid, fileResource);        }      }      messageHelper.setSentDate(new Date());      // 发送邮件      javaMailSender.send(message);      logger.info("------------发送邮件完成----------");          } catch (MessagingException e) {            e.printStackTrace();    }  }}

MailModel实体类

package com.support.entity;import java.util.Map;public class MailModel {    /**   * 发件人邮箱服务器   */  private String emailHost;  /**   * 发件人邮箱   */  private String emailFrom;  /**   * 发件人用户名   */  private String emailUserName;  /**   * 发件人密码   */  private String emailPassword;  /**   * 收件人邮箱,多个邮箱以“;”分隔   */  private String toEmails;  /**   * 邮件主题   */  private String subject;  /**   * 邮件内容   */  private String content;  /**   * 邮件中的图片,为空时无图片。map中的key为图片ID,value为图片地址   */  private Map<String, String> pictures;  /**   * 邮件中的附件,为空时无附件。map中的key为附件ID,value为附件地址   */  private Map<String, String> attachments;      private String fromAddress;//发送人地址1个    private String toAddresses;//接收人地址,可以为很多个,每个地址之间用";"分隔,比方说450065208@qq.com;lpf@sina.com    private String[] attachFileNames;//附件   public String getFromAddress() {    return fromAddress;  }  public void setFromAddress(String fromAddress) {    this.fromAddress = fromAddress;  }  public String getToAddresses() {    return toAddresses;  }  public void setToAddresses(String toAddresses) {    this.toAddresses = toAddresses;  }  public String getSubject() {    return subject;  }  public void setSubject(String subject) {    this.subject = subject;  }  public String getContent() {    return content;  }  public void setContent(String content) {    this.content = content;  }  public String[] getAttachFileNames() {    return attachFileNames;  }  public void setAttachFileNames(String[] attachFileNames) {    this.attachFileNames = attachFileNames;  }  public String getEmailHost() {    return emailHost;  }  public void setEmailHost(String emailHost) {    this.emailHost = emailHost;  }  public String getEmailFrom() {    return emailFrom;  }  public void setEmailFrom(String emailFrom) {    this.emailFrom = emailFrom;  }  public String getEmailUserName() {    return emailUserName;  }  public void setEmailUserName(String emailUserName) {    this.emailUserName = emailUserName;  }  public String getEmailPassword() {    return emailPassword;  }  public void setEmailPassword(String emailPassword) {    this.emailPassword = emailPassword;  }  public String getToEmails() {    return toEmails;  }  public void setToEmails(String toEmails) {    this.toEmails = toEmails;  }  public Map<String, String> getPictures() {    return pictures;  }  public void setPictures(Map<String, String> pictures) {    this.pictures = pictures;  }  public Map<String, String> getAttachments() {    return attachments;  }  public void setAttachments(Map<String, String> attachments) {    this.attachments = attachments;  }    }

spring.xml添加配置信息

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:context="http://www.springframework.org/schema/context"  xsi:schemaLocation="    http://www.springframework.org/schema/beans     http://www.springframework.org/schema/beans/spring-beans.xsd    http://www.springframework.org/schema/context     http://www.springframework.org/schema/context/spring-context.xsd">  <!-- 发送邮件 -->  <bean id="javaMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">    <property name="host">    <value>${mail.host}</value>    </property>    <property name="javaMailProperties">       <props>        <prop key="mail.smtp.auth">true</prop>        <prop key="mail.smtp.timeout">25000</prop>       </props>    </property>      <property name="username">    <value>${mail.username}</value>    </property>    <property name="password">    <value>${mail.password}</value>    </property>    <property name="defaultEncoding">    <value>UTF-8</value>    </property>   </bean>     <bean id="simpleMailMessage" class="org.springframework.mail.SimpleMailMessage">    <property name="from" value="${mail.from}" />    <property name="subject" value="${mail.subject}" />     <property name="to" value="${mail.to}" />    <!--    <property name="text" value="邮件内容" />    -->  </bean></beans>

 dev.properties配置

# email configurationmail.host=smtp.163.commail.username=chenyanqing5945mail.password=123456mail.from=chenyanqing5945@163.com#发件人mail.to=164792930@qq.com#收件人(多个用,隔开)mail.subject=testEmail #主题

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表