spring 增加邮件发送用例
This commit is contained in:
		
							
								
								
									
										91
									
								
								spring/spring-email-annotation/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								spring/spring-email-annotation/pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,91 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
				
			||||||
 | 
					         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
				
			||||||
 | 
					         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
				
			||||||
 | 
					    <modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <groupId>com.heibaiying</groupId>
 | 
				
			||||||
 | 
					    <artifactId>spring-email</artifactId>
 | 
				
			||||||
 | 
					    <version>1.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					    <build>
 | 
				
			||||||
 | 
					        <plugins>
 | 
				
			||||||
 | 
					            <plugin>
 | 
				
			||||||
 | 
					                <groupId>org.apache.maven.plugins</groupId>
 | 
				
			||||||
 | 
					                <artifactId>maven-compiler-plugin</artifactId>
 | 
				
			||||||
 | 
					                <configuration>
 | 
				
			||||||
 | 
					                    <source>8</source>
 | 
				
			||||||
 | 
					                    <target>8</target>
 | 
				
			||||||
 | 
					                </configuration>
 | 
				
			||||||
 | 
					            </plugin>
 | 
				
			||||||
 | 
					        </plugins>
 | 
				
			||||||
 | 
					    </build>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <properties>
 | 
				
			||||||
 | 
					        <spring-base-version>5.1.3.RELEASE</spring-base-version>
 | 
				
			||||||
 | 
					    </properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependencies>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-context</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-beans</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-core</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-web</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-webmvc</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>javax.servlet</groupId>
 | 
				
			||||||
 | 
					            <artifactId>javax.servlet-api</artifactId>
 | 
				
			||||||
 | 
					            <version>4.0.1</version>
 | 
				
			||||||
 | 
					            <scope>provided</scope>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <!--邮件发送依赖包-->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-context-support</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>javax.mail</groupId>
 | 
				
			||||||
 | 
					            <artifactId>mail</artifactId>
 | 
				
			||||||
 | 
					            <version>1.4.7</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <!--测试相关依赖-->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-test</artifactId>
 | 
				
			||||||
 | 
					            <version>5.1.3.RELEASE</version>
 | 
				
			||||||
 | 
					            <scope>test</scope>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>junit</groupId>
 | 
				
			||||||
 | 
					            <artifactId>junit</artifactId>
 | 
				
			||||||
 | 
					            <version>4.12</version>
 | 
				
			||||||
 | 
					            <scope>test</scope>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <!--模板引擎-->
 | 
				
			||||||
 | 
					        <!--这里采用的是beetl,beetl性能很卓越并且功能也很全面 官方文档地址 <a href="http://ibeetl.com/guide/#beetl">-->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>com.ibeetl</groupId>
 | 
				
			||||||
 | 
					            <artifactId>beetl</artifactId>
 | 
				
			||||||
 | 
					            <version>2.9.7</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					    </dependencies>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
@@ -0,0 +1,43 @@
 | 
				
			|||||||
 | 
					package com.heibaiying.config;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.beetl.core.GroupTemplate;
 | 
				
			||||||
 | 
					import org.beetl.core.resource.ClasspathResourceLoader;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.ComponentScan;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Configuration;
 | 
				
			||||||
 | 
					import org.springframework.mail.javamail.JavaMailSenderImpl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author : heibaiying
 | 
				
			||||||
 | 
					 * @description :
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Configuration
 | 
				
			||||||
 | 
					@ComponentScan(value = "com.heibaiying.email")
 | 
				
			||||||
 | 
					public class EmailConfig {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /***
 | 
				
			||||||
 | 
					     * 在这里可以声明不同的邮件服务器主机,通常是SMTP主机,而具体的用户名和时授权码则建议在业务中从数据库查询
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Bean(name = "qqMailSender")
 | 
				
			||||||
 | 
					    JavaMailSenderImpl javaMailSender() {
 | 
				
			||||||
 | 
					        JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
 | 
				
			||||||
 | 
					        javaMailSender.setHost("smtp.qq.com");
 | 
				
			||||||
 | 
					        javaMailSender.setPassword("587");
 | 
				
			||||||
 | 
					        return javaMailSender;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /***
 | 
				
			||||||
 | 
					     * 配置模板引擎
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Bean
 | 
				
			||||||
 | 
					    GroupTemplate groupTemplate() throws IOException {
 | 
				
			||||||
 | 
					        //指定加载模板资源的位置 指定在classpath:beetl下-
 | 
				
			||||||
 | 
					        ClasspathResourceLoader loader = new ClasspathResourceLoader("beetl");
 | 
				
			||||||
 | 
					        //beetl配置 这里采用默认的配置-
 | 
				
			||||||
 | 
					        org.beetl.core.Configuration configuration = org.beetl.core.Configuration.defaultConfiguration();
 | 
				
			||||||
 | 
					        return new GroupTemplate(loader, configuration);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,147 @@
 | 
				
			|||||||
 | 
					package com.heibaiying.email;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.beetl.core.GroupTemplate;
 | 
				
			||||||
 | 
					import org.beetl.core.Template;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.core.io.FileSystemResource;
 | 
				
			||||||
 | 
					import org.springframework.mail.MailException;
 | 
				
			||||||
 | 
					import org.springframework.mail.SimpleMailMessage;
 | 
				
			||||||
 | 
					import org.springframework.mail.javamail.JavaMailSenderImpl;
 | 
				
			||||||
 | 
					import org.springframework.mail.javamail.MimeMessageHelper;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.mail.MessagingException;
 | 
				
			||||||
 | 
					import javax.mail.internet.MimeMessage;
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author : heibaiying
 | 
				
			||||||
 | 
					 * @description :
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Component
 | 
				
			||||||
 | 
					public class SpringMail {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private JavaMailSenderImpl qqMailSender;
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private GroupTemplate groupTemplate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 发送简单邮件
 | 
				
			||||||
 | 
					     * 在qq邮件发送的测试中,测试结果表明不管是简单邮件还是复杂邮件都必须指定发送用户,
 | 
				
			||||||
 | 
					     * 且发送用户已经授权不然都会抛出异常: SMTPSendFailedException 501 mail from address must be same as authorization user
 | 
				
			||||||
 | 
					     * qq 的授权码 可以在 设置/账户/POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 中开启服务后获取
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void sendTextMessage(String from, String authWord, String to, String subject, String content) {
 | 
				
			||||||
 | 
					        // 设置发送人邮箱和授权码
 | 
				
			||||||
 | 
					        qqMailSender.setUsername(from);
 | 
				
			||||||
 | 
					        qqMailSender.setPassword(authWord);
 | 
				
			||||||
 | 
					        // 实例化消息对象
 | 
				
			||||||
 | 
					        SimpleMailMessage msg = new SimpleMailMessage();
 | 
				
			||||||
 | 
					        msg.setFrom(from);
 | 
				
			||||||
 | 
					        msg.setTo(to);
 | 
				
			||||||
 | 
					        msg.setSubject(subject);
 | 
				
			||||||
 | 
					        msg.setText(content);
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            // 发送消息
 | 
				
			||||||
 | 
					            this.qqMailSender.send(msg);
 | 
				
			||||||
 | 
					            System.out.println("发送邮件成功");
 | 
				
			||||||
 | 
					        } catch (MailException ex) {
 | 
				
			||||||
 | 
					            // 消息发送失败可以做对应的处理
 | 
				
			||||||
 | 
					            System.err.println("发送邮件失败" + ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 发送带附件的邮件
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void sendEmailWithAttachments(String from, String authWord, String to,
 | 
				
			||||||
 | 
					                                         String subject, String content, Map<String, File> files) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            // 设置发送人邮箱和授权码
 | 
				
			||||||
 | 
					            qqMailSender.setUsername(from);
 | 
				
			||||||
 | 
					            qqMailSender.setPassword(authWord);
 | 
				
			||||||
 | 
					            // 实例化消息对象
 | 
				
			||||||
 | 
					            MimeMessage message = qqMailSender.createMimeMessage();
 | 
				
			||||||
 | 
					            // 需要指定第二个参数为true 代表创建支持可选文本,内联元素和附件的多部分消息
 | 
				
			||||||
 | 
					            MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
 | 
				
			||||||
 | 
					            helper.setFrom(from);
 | 
				
			||||||
 | 
					            helper.setTo(to);
 | 
				
			||||||
 | 
					            helper.setSubject(subject);
 | 
				
			||||||
 | 
					            helper.setText(content);
 | 
				
			||||||
 | 
					            // 传入附件
 | 
				
			||||||
 | 
					            for (Map.Entry<String, File> entry : files.entrySet()) {
 | 
				
			||||||
 | 
					                helper.addAttachment(entry.getKey(), entry.getValue());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            // 发送消息
 | 
				
			||||||
 | 
					            this.qqMailSender.send(message);
 | 
				
			||||||
 | 
					            System.out.println("发送邮件成功");
 | 
				
			||||||
 | 
					        } catch (MessagingException ex) {
 | 
				
			||||||
 | 
					            // 消息发送失败可以做对应的处理
 | 
				
			||||||
 | 
					            System.err.println("发送邮件失败" + ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 发送带内嵌资源的邮件
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void sendEmailWithInline(String from, String authWord, String to,
 | 
				
			||||||
 | 
					                                    String subject, String content, File file) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            // 设置发送人邮箱和授权码
 | 
				
			||||||
 | 
					            qqMailSender.setUsername(from);
 | 
				
			||||||
 | 
					            qqMailSender.setPassword(authWord);
 | 
				
			||||||
 | 
					            // 实例化消息对象
 | 
				
			||||||
 | 
					            MimeMessage message = qqMailSender.createMimeMessage();
 | 
				
			||||||
 | 
					            // 需要指定第二个参数为true 代表创建支持可选文本,内联元素和附件的多部分消息
 | 
				
			||||||
 | 
					            MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
 | 
				
			||||||
 | 
					            helper.setFrom(from);
 | 
				
			||||||
 | 
					            helper.setTo(to);
 | 
				
			||||||
 | 
					            helper.setSubject(subject);
 | 
				
			||||||
 | 
					            // 使用true标志来指示包含的文本是HTML 固定格式资源前缀 cid:
 | 
				
			||||||
 | 
					            helper.setText("<html><body><img src='cid:image'></body></html>", true);
 | 
				
			||||||
 | 
					            // 需要先指定文本 再指定资源文件
 | 
				
			||||||
 | 
					            FileSystemResource res = new FileSystemResource(file);
 | 
				
			||||||
 | 
					            helper.addInline("image", res);
 | 
				
			||||||
 | 
					            // 发送消息
 | 
				
			||||||
 | 
					            this.qqMailSender.send(message);
 | 
				
			||||||
 | 
					            System.out.println("发送邮件成功");
 | 
				
			||||||
 | 
					        } catch (MessagingException ex) {
 | 
				
			||||||
 | 
					            // 消息发送失败可以做对应的处理
 | 
				
			||||||
 | 
					            System.err.println("发送邮件失败" + ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 使用模板邮件
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void sendEmailByTemplate(String from, String authWord, String to,
 | 
				
			||||||
 | 
					                                    String subject, String content) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Template t = groupTemplate.getTemplate("template.html");
 | 
				
			||||||
 | 
					            t.binding("subject", subject);
 | 
				
			||||||
 | 
					            t.binding("content", content);
 | 
				
			||||||
 | 
					            String text = t.render();
 | 
				
			||||||
 | 
					            // 设置发送人邮箱和授权码
 | 
				
			||||||
 | 
					            qqMailSender.setUsername(from);
 | 
				
			||||||
 | 
					            qqMailSender.setPassword(authWord);
 | 
				
			||||||
 | 
					            // 实例化消息对象
 | 
				
			||||||
 | 
					            MimeMessage message = qqMailSender.createMimeMessage();
 | 
				
			||||||
 | 
					            // 指定 utf-8 防止乱码
 | 
				
			||||||
 | 
					            MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
 | 
				
			||||||
 | 
					            helper.setFrom(from);
 | 
				
			||||||
 | 
					            helper.setTo(to);
 | 
				
			||||||
 | 
					            helper.setSubject(subject);
 | 
				
			||||||
 | 
					            // 为true 时候 表示文本内容以 html 渲染
 | 
				
			||||||
 | 
					            helper.setText(text, true);
 | 
				
			||||||
 | 
					            this.qqMailSender.send(message);
 | 
				
			||||||
 | 
					            System.out.println("发送邮件成功");
 | 
				
			||||||
 | 
					        } catch (MessagingException ex) {
 | 
				
			||||||
 | 
					            // 消息发送失败可以做对应的处理
 | 
				
			||||||
 | 
					            System.err.println("发送邮件失败" + ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<!doctype html>
 | 
				
			||||||
 | 
					<html lang="en">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					    <h1>邮件主题:<span style="color: chartreuse"> ${subject}</span></h1>
 | 
				
			||||||
 | 
					    <h4 style="color: blueviolet">${content}</h4>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
@@ -0,0 +1,60 @@
 | 
				
			|||||||
 | 
					package com.heibaiying;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.heibaiying.config.EmailConfig;
 | 
				
			||||||
 | 
					import com.heibaiying.email.SpringMail;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.junit.runner.RunWith;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.test.context.ContextConfiguration;
 | 
				
			||||||
 | 
					import org.springframework.test.context.junit4.SpringRunner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author : heibaiying
 | 
				
			||||||
 | 
					 * @description : 发送邮件测试类
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
 | 
					@ContextConfiguration(classes = EmailConfig.class)
 | 
				
			||||||
 | 
					public class SendEmail {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private SpringMail springMail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 发送方邮箱地址
 | 
				
			||||||
 | 
					    private static final String from = "发送方邮箱地址@qq.com";
 | 
				
			||||||
 | 
					    // 发送方邮箱地址对应的授权码
 | 
				
			||||||
 | 
					    private static final String authWord = "授权码";
 | 
				
			||||||
 | 
					    // 接收方邮箱地址
 | 
				
			||||||
 | 
					    private static final String to = "接收方邮箱地址@qq.com";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void sendMessage() {
 | 
				
			||||||
 | 
					       
 | 
				
			||||||
 | 
					        springMail.sendTextMessage(from, authWord, to, "spring简单邮件", "Hello Spring Email!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void sendComplexMessage() {
 | 
				
			||||||
 | 
					        Map<String, File> fileMap = new HashMap<>();
 | 
				
			||||||
 | 
					        fileMap.put("image1.jpg", new File("D:\\LearningNotes\\picture\\msm相关依赖.png"));
 | 
				
			||||||
 | 
					        fileMap.put("image2.jpg", new File("D:\\LearningNotes\\picture\\RabbitMQ模型架构.png"));
 | 
				
			||||||
 | 
					        springMail.sendEmailWithAttachments(from, authWord, to, "spring多附件邮件"
 | 
				
			||||||
 | 
					                , "Hello Spring Email!", fileMap);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void sendEmailWithInline() {
 | 
				
			||||||
 | 
					        springMail.sendEmailWithInline(from, authWord, to, "spring内嵌资源邮件"
 | 
				
			||||||
 | 
					                , "Hello Spring Email!", new File("D:\\LearningNotes\\picture\\RabbitMQ模型架构.png"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void sendEmailByTemplate() {
 | 
				
			||||||
 | 
					        springMail.sendEmailByTemplate(from, authWord, to,
 | 
				
			||||||
 | 
					                "spring模板邮件", "Hello Spring Email!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										91
									
								
								spring/spring-email/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								spring/spring-email/pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,91 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
				
			||||||
 | 
					         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
				
			||||||
 | 
					         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
				
			||||||
 | 
					    <modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <groupId>com.heibaiying</groupId>
 | 
				
			||||||
 | 
					    <artifactId>spring-email</artifactId>
 | 
				
			||||||
 | 
					    <version>1.0-SNAPSHOT</version>
 | 
				
			||||||
 | 
					    <build>
 | 
				
			||||||
 | 
					        <plugins>
 | 
				
			||||||
 | 
					            <plugin>
 | 
				
			||||||
 | 
					                <groupId>org.apache.maven.plugins</groupId>
 | 
				
			||||||
 | 
					                <artifactId>maven-compiler-plugin</artifactId>
 | 
				
			||||||
 | 
					                <configuration>
 | 
				
			||||||
 | 
					                    <source>8</source>
 | 
				
			||||||
 | 
					                    <target>8</target>
 | 
				
			||||||
 | 
					                </configuration>
 | 
				
			||||||
 | 
					            </plugin>
 | 
				
			||||||
 | 
					        </plugins>
 | 
				
			||||||
 | 
					    </build>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <properties>
 | 
				
			||||||
 | 
					        <spring-base-version>5.1.3.RELEASE</spring-base-version>
 | 
				
			||||||
 | 
					    </properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependencies>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-context</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-beans</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-core</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-web</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-webmvc</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>javax.servlet</groupId>
 | 
				
			||||||
 | 
					            <artifactId>javax.servlet-api</artifactId>
 | 
				
			||||||
 | 
					            <version>4.0.1</version>
 | 
				
			||||||
 | 
					            <scope>provided</scope>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <!--邮件发送依赖包-->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-context-support</artifactId>
 | 
				
			||||||
 | 
					            <version>${spring-base-version}</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>javax.mail</groupId>
 | 
				
			||||||
 | 
					            <artifactId>mail</artifactId>
 | 
				
			||||||
 | 
					            <version>1.4.7</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <!--测试相关依赖-->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.springframework</groupId>
 | 
				
			||||||
 | 
					            <artifactId>spring-test</artifactId>
 | 
				
			||||||
 | 
					            <version>5.1.3.RELEASE</version>
 | 
				
			||||||
 | 
					            <scope>test</scope>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>junit</groupId>
 | 
				
			||||||
 | 
					            <artifactId>junit</artifactId>
 | 
				
			||||||
 | 
					            <version>4.12</version>
 | 
				
			||||||
 | 
					            <scope>test</scope>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					        <!--模板引擎-->
 | 
				
			||||||
 | 
					        <!--这里采用的是beetl,beetl性能很卓越并且功能也很全面 官方文档地址 <a href="http://ibeetl.com/guide/#beetl">-->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>com.ibeetl</groupId>
 | 
				
			||||||
 | 
					            <artifactId>beetl</artifactId>
 | 
				
			||||||
 | 
					            <version>2.9.7</version>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					    </dependencies>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
@@ -0,0 +1,147 @@
 | 
				
			|||||||
 | 
					package com.heibaiying.email;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.beetl.core.GroupTemplate;
 | 
				
			||||||
 | 
					import org.beetl.core.Template;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.core.io.FileSystemResource;
 | 
				
			||||||
 | 
					import org.springframework.mail.MailException;
 | 
				
			||||||
 | 
					import org.springframework.mail.SimpleMailMessage;
 | 
				
			||||||
 | 
					import org.springframework.mail.javamail.JavaMailSenderImpl;
 | 
				
			||||||
 | 
					import org.springframework.mail.javamail.MimeMessageHelper;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.mail.MessagingException;
 | 
				
			||||||
 | 
					import javax.mail.internet.MimeMessage;
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author : heibaiying
 | 
				
			||||||
 | 
					 * @description :
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Component
 | 
				
			||||||
 | 
					public class SpringMail {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private JavaMailSenderImpl qqMailSender;
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private GroupTemplate groupTemplate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 发送简单邮件
 | 
				
			||||||
 | 
					     * 在qq邮件发送的测试中,测试结果表明不管是简单邮件还是复杂邮件都必须指定发送用户,
 | 
				
			||||||
 | 
					     * 且发送用户已经授权不然都会抛出异常: SMTPSendFailedException 501 mail from address must be same as authorization user
 | 
				
			||||||
 | 
					     * qq 的授权码 可以在 设置/账户/POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 中开启服务后获取
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void sendTextMessage(String from, String authWord, String to, String subject, String content) {
 | 
				
			||||||
 | 
					        // 设置发送人邮箱和授权码
 | 
				
			||||||
 | 
					        qqMailSender.setUsername(from);
 | 
				
			||||||
 | 
					        qqMailSender.setPassword(authWord);
 | 
				
			||||||
 | 
					        // 实例化消息对象
 | 
				
			||||||
 | 
					        SimpleMailMessage msg = new SimpleMailMessage();
 | 
				
			||||||
 | 
					        msg.setFrom(from);
 | 
				
			||||||
 | 
					        msg.setTo(to);
 | 
				
			||||||
 | 
					        msg.setSubject(subject);
 | 
				
			||||||
 | 
					        msg.setText(content);
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            // 发送消息
 | 
				
			||||||
 | 
					            this.qqMailSender.send(msg);
 | 
				
			||||||
 | 
					            System.out.println("发送邮件成功");
 | 
				
			||||||
 | 
					        } catch (MailException ex) {
 | 
				
			||||||
 | 
					            // 消息发送失败可以做对应的处理
 | 
				
			||||||
 | 
					            System.err.println("发送邮件失败" + ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 发送带附件的邮件
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void sendEmailWithAttachments(String from, String authWord, String to,
 | 
				
			||||||
 | 
					                                         String subject, String content, Map<String, File> files) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            // 设置发送人邮箱和授权码
 | 
				
			||||||
 | 
					            qqMailSender.setUsername(from);
 | 
				
			||||||
 | 
					            qqMailSender.setPassword(authWord);
 | 
				
			||||||
 | 
					            // 实例化消息对象
 | 
				
			||||||
 | 
					            MimeMessage message = qqMailSender.createMimeMessage();
 | 
				
			||||||
 | 
					            // 需要指定第二个参数为true 代表创建支持可选文本,内联元素和附件的多部分消息
 | 
				
			||||||
 | 
					            MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
 | 
				
			||||||
 | 
					            helper.setFrom(from);
 | 
				
			||||||
 | 
					            helper.setTo(to);
 | 
				
			||||||
 | 
					            helper.setSubject(subject);
 | 
				
			||||||
 | 
					            helper.setText(content);
 | 
				
			||||||
 | 
					            // 传入附件
 | 
				
			||||||
 | 
					            for (Map.Entry<String, File> entry : files.entrySet()) {
 | 
				
			||||||
 | 
					                helper.addAttachment(entry.getKey(), entry.getValue());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            // 发送消息
 | 
				
			||||||
 | 
					            this.qqMailSender.send(message);
 | 
				
			||||||
 | 
					            System.out.println("发送邮件成功");
 | 
				
			||||||
 | 
					        } catch (MessagingException ex) {
 | 
				
			||||||
 | 
					            // 消息发送失败可以做对应的处理
 | 
				
			||||||
 | 
					            System.err.println("发送邮件失败" + ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 发送带内嵌资源的邮件
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void sendEmailWithInline(String from, String authWord, String to,
 | 
				
			||||||
 | 
					                                    String subject, String content, File file) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            // 设置发送人邮箱和授权码
 | 
				
			||||||
 | 
					            qqMailSender.setUsername(from);
 | 
				
			||||||
 | 
					            qqMailSender.setPassword(authWord);
 | 
				
			||||||
 | 
					            // 实例化消息对象
 | 
				
			||||||
 | 
					            MimeMessage message = qqMailSender.createMimeMessage();
 | 
				
			||||||
 | 
					            // 需要指定第二个参数为true 代表创建支持可选文本,内联元素和附件的多部分消息
 | 
				
			||||||
 | 
					            MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
 | 
				
			||||||
 | 
					            helper.setFrom(from);
 | 
				
			||||||
 | 
					            helper.setTo(to);
 | 
				
			||||||
 | 
					            helper.setSubject(subject);
 | 
				
			||||||
 | 
					            // 使用true标志来指示包含的文本是HTML 固定格式资源前缀 cid:
 | 
				
			||||||
 | 
					            helper.setText("<html><body><img src='cid:image'></body></html>", true);
 | 
				
			||||||
 | 
					            // 需要先指定文本 再指定资源文件
 | 
				
			||||||
 | 
					            FileSystemResource res = new FileSystemResource(file);
 | 
				
			||||||
 | 
					            helper.addInline("image", res);
 | 
				
			||||||
 | 
					            // 发送消息
 | 
				
			||||||
 | 
					            this.qqMailSender.send(message);
 | 
				
			||||||
 | 
					            System.out.println("发送邮件成功");
 | 
				
			||||||
 | 
					        } catch (MessagingException ex) {
 | 
				
			||||||
 | 
					            // 消息发送失败可以做对应的处理
 | 
				
			||||||
 | 
					            System.err.println("发送邮件失败" + ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 使用模板邮件
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public void sendEmailByTemplate(String from, String authWord, String to,
 | 
				
			||||||
 | 
					                                    String subject, String content) {
 | 
				
			||||||
 | 
					        try {
 | 
				
			||||||
 | 
					            Template t = groupTemplate.getTemplate("template.html");
 | 
				
			||||||
 | 
					            t.binding("subject", subject);
 | 
				
			||||||
 | 
					            t.binding("content", content);
 | 
				
			||||||
 | 
					            String text = t.render();
 | 
				
			||||||
 | 
					            // 设置发送人邮箱和授权码
 | 
				
			||||||
 | 
					            qqMailSender.setUsername(from);
 | 
				
			||||||
 | 
					            qqMailSender.setPassword(authWord);
 | 
				
			||||||
 | 
					            // 实例化消息对象
 | 
				
			||||||
 | 
					            MimeMessage message = qqMailSender.createMimeMessage();
 | 
				
			||||||
 | 
					            // 指定 utf-8 防止乱码
 | 
				
			||||||
 | 
					            MimeMessageHelper helper = new MimeMessageHelper(message, true, "utf-8");
 | 
				
			||||||
 | 
					            helper.setFrom(from);
 | 
				
			||||||
 | 
					            helper.setTo(to);
 | 
				
			||||||
 | 
					            helper.setSubject(subject);
 | 
				
			||||||
 | 
					            // 为true 时候 表示文本内容以 html 渲染
 | 
				
			||||||
 | 
					            helper.setText(text, true);
 | 
				
			||||||
 | 
					            this.qqMailSender.send(message);
 | 
				
			||||||
 | 
					            System.out.println("发送邮件成功");
 | 
				
			||||||
 | 
					        } catch (MessagingException ex) {
 | 
				
			||||||
 | 
					            // 消息发送失败可以做对应的处理
 | 
				
			||||||
 | 
					            System.err.println("发送邮件失败" + ex.getMessage());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										10
									
								
								spring/spring-email/src/main/resources/beetl/template.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								spring/spring-email/src/main/resources/beetl/template.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<!doctype html>
 | 
				
			||||||
 | 
					<html lang="en">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					    <h1>邮件主题:<span style="color: chartreuse"> ${subject}</span></h1>
 | 
				
			||||||
 | 
					    <h4 style="color: blueviolet">${content}</h4>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										32
									
								
								spring/spring-email/src/main/resources/springApplication.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								spring/spring-email/src/main/resources/springApplication.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					<?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-4.1.xsd">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!-- 开启注解包扫描-->
 | 
				
			||||||
 | 
					    <context:component-scan base-package="com.heibaiying.email"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!--在这里可以声明不同的邮件服务器主机,通常是SMTP主机,而具体的用户名和时授权码则建议在业务中从数据库查询-->
 | 
				
			||||||
 | 
					    <bean id="qqMailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
 | 
				
			||||||
 | 
					        <!--qq 邮箱配置 <a href="https://service.mail.qq.com/cgi-bin/help?subtype=1&no=167&id=28"> -->
 | 
				
			||||||
 | 
					        <property name="host" value="smtp.qq.com"/>
 | 
				
			||||||
 | 
					        <property name="port" value="587"/>
 | 
				
			||||||
 | 
					    </bean>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <!--配置模板引擎-->
 | 
				
			||||||
 | 
					    <bean id="resourceLoader" class="org.beetl.core.resource.ClasspathResourceLoader">
 | 
				
			||||||
 | 
					        <!--指定加载模板资源的位置 指定在classpath:beetl下-->
 | 
				
			||||||
 | 
					        <constructor-arg name="root" value="beetl"/>
 | 
				
			||||||
 | 
					    </bean>
 | 
				
			||||||
 | 
					    <!--beetl 配置  这里采用默认的配置-->
 | 
				
			||||||
 | 
					    <bean id="configuration" class="org.beetl.core.Configuration" init-method="defaultConfiguration"/>
 | 
				
			||||||
 | 
					    <bean id="groupTemplate" class="org.beetl.core.GroupTemplate">
 | 
				
			||||||
 | 
					        <constructor-arg name="loader" ref="resourceLoader"/>
 | 
				
			||||||
 | 
					        <constructor-arg name="conf" ref="configuration"/>
 | 
				
			||||||
 | 
					    </bean>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</beans>
 | 
				
			||||||
@@ -0,0 +1,59 @@
 | 
				
			|||||||
 | 
					package com.heibaiying;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.heibaiying.email.SpringMail;
 | 
				
			||||||
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.junit.runner.RunWith;
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.test.context.ContextConfiguration;
 | 
				
			||||||
 | 
					import org.springframework.test.context.junit4.SpringRunner;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.File;
 | 
				
			||||||
 | 
					import java.util.HashMap;
 | 
				
			||||||
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @author : heibaiying
 | 
				
			||||||
 | 
					 * @description : 发送邮件测试类
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@RunWith(SpringRunner.class)
 | 
				
			||||||
 | 
					@ContextConfiguration({"classpath:springApplication.xml"})
 | 
				
			||||||
 | 
					public class SendEmail {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Autowired
 | 
				
			||||||
 | 
					    private SpringMail springMail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 发送方邮箱地址
 | 
				
			||||||
 | 
					    private static final String from = "发送方邮箱地址@qq.com";
 | 
				
			||||||
 | 
					    // 发送方邮箱地址对应的授权码
 | 
				
			||||||
 | 
					    private static final String authWord = "授权码";
 | 
				
			||||||
 | 
					    // 接收方邮箱地址
 | 
				
			||||||
 | 
					    private static final String to = "接收方邮箱地址@qq.com";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void sendMessage() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        springMail.sendTextMessage(from, authWord, to, "spring简单邮件", "Hello Spring Email!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void sendComplexMessage() {
 | 
				
			||||||
 | 
					        Map<String, File> fileMap = new HashMap<>();
 | 
				
			||||||
 | 
					        fileMap.put("image1.jpg", new File("D:\\LearningNotes\\picture\\msm相关依赖.png"));
 | 
				
			||||||
 | 
					        fileMap.put("image2.jpg", new File("D:\\LearningNotes\\picture\\RabbitMQ模型架构.png"));
 | 
				
			||||||
 | 
					        springMail.sendEmailWithAttachments(from, authWord, to, "spring多附件邮件"
 | 
				
			||||||
 | 
					                , "Hello Spring Email!", fileMap);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void sendEmailWithInline() {
 | 
				
			||||||
 | 
					        springMail.sendEmailWithInline(from, authWord, to, "spring内嵌资源邮件"
 | 
				
			||||||
 | 
					                , "Hello Spring Email!", new File("D:\\LearningNotes\\picture\\RabbitMQ模型架构.png"));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void sendEmailByTemplate() {
 | 
				
			||||||
 | 
					        springMail.sendEmailByTemplate(from, authWord, to,
 | 
				
			||||||
 | 
					                "spring模板邮件", "Hello Spring Email!");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user