服务器之家

服务器之家 > 正文

springMVC发送邮件的简单实现

时间:2020-09-13 12:19     来源/作者:偶遇晨光

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

1,Controller类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
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;
 
@Service
public 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("&nbsp&nbsp&nbsp&nbsp附件是个人清单。<br />");
    builder.append("&nbsp&nbsp&nbsp&nbsp其中人信息;<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实体类

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
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添加配置信息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?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配置

?
1
2
3
4
5
6
7
8
# email configuration
mail.host=smtp.163.com
mail.username=chenyanqing5945
mail.password=123456
 
mail.from=chenyanqing5945@163.com#发件人
mail.to=164792930@qq.com#收件人(多个用,隔开)
mail.subject=testEmail #主题

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

原文链接:http://www.cnblogs.com/chenyq/p/5512134.html

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享
歪歪漫画vip账号共享2020_yy漫画免费账号密码共享 2020-04-07
电视剧《琉璃》全集在线观看 琉璃美人煞1-59集免费观看地址
电视剧《琉璃》全集在线观看 琉璃美人煞1-59集免费观看地址 2020-08-12
最新idea2020注册码永久激活(激活到2100年)
最新idea2020注册码永久激活(激活到2100年) 2020-07-29
返回顶部