diff --git a/README.md b/README.md
index a16ef7b..058da6a 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,7 @@ Spring boot使用的各种示例,以最简单、最实用为标准
- [spring-boot-rabbitmq](https://github.com/ityouknow/spring-boot-starter/tree/master/spring-boot-rabbitmq):spring boot和rabbitmq各种消息应用案例
- [spring-boot-scheduler](https://github.com/ityouknow/spring-boot-starter/tree/master/spring-boot-scheduler):spring boot和定时任务案例
- [spring-boot-web](https://github.com/ityouknow/spring-boot-starter/tree/master/spring-boot-web):web开发综合使用案例
+- [spring-boot-mail](https://github.com/ityouknow/spring-boot-starter/tree/master/spring-boot-mail):spring boot和邮件服务
- [Favorites-web](https://github.com/cloudfavorites/favorites-web):云收藏(springboot实战开源软件)
@@ -27,4 +28,6 @@ Spring boot使用的各种示例,以最简单、最实用为标准
- [springboot(七):springboot+mybatis多数据源最简解决方案](http://www.ityouknow.com/springboot/2016/11/25/springboot(%E4%B8%83)-springboot+mybatis%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90%E6%9C%80%E7%AE%80%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88.html)
- [springboot(八):RabbitMQ详解](http://www.ityouknow.com/springboot/2016/11/30/springboot(%E5%85%AB)-RabbitMQ%E8%AF%A6%E8%A7%A3.html)
- [springboot(九):定时任务](http://www.ityouknow.com/springboot/2016/12/02/springboot(%E4%B9%9D)-%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1.html)
+- [springboot(十):邮件服务](http://www.ityouknow.com/life/2017/05/06/springboot-mail.html)
- [springboot实战:我们的第一款开源软件](http://www.ityouknow.com/springboot/2016/09/26/springboot%E5%AE%9E%E6%88%98-%E6%88%91%E4%BB%AC%E7%9A%84%E7%AC%AC%E4%B8%80%E6%AC%BE%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6.html)
+
diff --git a/spring-boot-mail/pom.xml b/spring-boot-mail/pom.xml
new file mode 100644
index 0000000..3056631
--- /dev/null
+++ b/spring-boot-mail/pom.xml
@@ -0,0 +1,71 @@
+
+
+ 4.0.0
+
+ com.neo
+ spring-boot-mail
+ 1.0.0
+ jar
+
+ spring-boot-mail
+ Demo project for Spring Boot and mail
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 1.5.3.RELEASE
+
+
+
+
+ UTF-8
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-devtools
+ true
+
+
+ org.springframework
+ spring-context-support
+ RELEASE
+
+
+ com.sun.mail
+ javax.mail
+ RELEASE
+
+
+
+ org.springframework.boot
+ spring-boot-starter-thymeleaf
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+ true
+
+
+
+
+
+
+
diff --git a/spring-boot-mail/src/main/java/com/neo/Application.java b/spring-boot-mail/src/main/java/com/neo/Application.java
new file mode 100644
index 0000000..7ce4c64
--- /dev/null
+++ b/spring-boot-mail/src/main/java/com/neo/Application.java
@@ -0,0 +1,13 @@
+package com.neo;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@SpringBootApplication
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+}
diff --git a/spring-boot-mail/src/main/java/com/neo/service/MailService.java b/spring-boot-mail/src/main/java/com/neo/service/MailService.java
new file mode 100644
index 0000000..a294854
--- /dev/null
+++ b/spring-boot-mail/src/main/java/com/neo/service/MailService.java
@@ -0,0 +1,16 @@
+package com.neo.service;
+
+/**
+ * Created by summer on 2017/5/4.
+ */
+public interface MailService {
+
+ public void sendSimpleMail(String to, String subject, String content);
+
+ public void sendHtmlMail(String to, String subject, String content);
+
+ public void sendAttachmentsMail(String to, String subject, String content, String filePath);
+
+ public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId);
+
+}
diff --git a/spring-boot-mail/src/main/java/com/neo/service/impl/MailServiceImpl.java b/spring-boot-mail/src/main/java/com/neo/service/impl/MailServiceImpl.java
new file mode 100644
index 0000000..9053e6f
--- /dev/null
+++ b/spring-boot-mail/src/main/java/com/neo/service/impl/MailServiceImpl.java
@@ -0,0 +1,138 @@
+package com.neo.service.impl;
+
+import com.neo.service.MailService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+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.Component;
+
+import javax.mail.MessagingException;
+import javax.mail.internet.MimeMessage;
+import java.io.File;
+
+/**
+ * Created by summer on 2017/5/4.
+ */
+@Component
+public class MailServiceImpl implements MailService{
+
+ private final Logger logger = LoggerFactory.getLogger(this.getClass());
+
+ @Autowired
+ private JavaMailSender mailSender;
+
+ @Value("${mail.fromMail.addr}")
+ private String from;
+
+ /**
+ * 发送文本邮件
+ * @param to
+ * @param subject
+ * @param content
+ */
+ @Override
+ public void sendSimpleMail(String to, String subject, String content) {
+ SimpleMailMessage message = new SimpleMailMessage();
+ message.setFrom(from);
+ message.setTo(to);
+ message.setSubject(subject);
+ message.setText(content);
+
+ try {
+ mailSender.send(message);
+ logger.info("简单邮件已经发送。");
+ } catch (Exception e) {
+ logger.error("发送简单邮件时发生异常!", e);
+ }
+
+ }
+
+ /**
+ * 发送html邮件
+ * @param to
+ * @param subject
+ * @param content
+ */
+ @Override
+ public void sendHtmlMail(String to, String subject, String content) {
+ MimeMessage message = mailSender.createMimeMessage();
+
+ try {
+ //true表示需要创建一个multipart message
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+ helper.setFrom(from);
+ helper.setTo(to);
+ helper.setSubject(subject);
+ helper.setText(content, true);
+
+ mailSender.send(message);
+ logger.info("html邮件发送成功");
+ } catch (MessagingException e) {
+ logger.error("发送html邮件时发生异常!", e);
+ }
+ }
+
+
+ /**
+ * 发送带附件的邮件
+ * @param to
+ * @param subject
+ * @param content
+ * @param filePath
+ */
+ public void sendAttachmentsMail(String to, String subject, String content, String filePath){
+ MimeMessage message = mailSender.createMimeMessage();
+
+ try {
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+ helper.setFrom(from);
+ helper.setTo(to);
+ helper.setSubject(subject);
+ helper.setText(content, true);
+
+ FileSystemResource file = new FileSystemResource(new File(filePath));
+ String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
+ helper.addAttachment(fileName, file);
+ //helper.addAttachment("test"+fileName, file);
+
+ mailSender.send(message);
+ logger.info("带附件的邮件已经发送。");
+ } catch (MessagingException e) {
+ logger.error("发送带附件的邮件时发生异常!", e);
+ }
+ }
+
+
+ /**
+ * 发送正文中有静态资源(图片)的邮件
+ * @param to
+ * @param subject
+ * @param content
+ * @param rscPath
+ * @param rscId
+ */
+ public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId){
+ MimeMessage message = mailSender.createMimeMessage();
+
+ try {
+ MimeMessageHelper helper = new MimeMessageHelper(message, true);
+ helper.setFrom(from);
+ helper.setTo(to);
+ helper.setSubject(subject);
+ helper.setText(content, true);
+
+ FileSystemResource res = new FileSystemResource(new File(rscPath));
+ helper.addInline(rscId, res);
+
+ mailSender.send(message);
+ logger.info("嵌入静态资源的邮件已经发送。");
+ } catch (MessagingException e) {
+ logger.error("发送嵌入静态资源的邮件时发生异常!", e);
+ }
+ }
+}
diff --git a/spring-boot-mail/src/main/resources/application.properties b/spring-boot-mail/src/main/resources/application.properties
new file mode 100644
index 0000000..dcbb521
--- /dev/null
+++ b/spring-boot-mail/src/main/resources/application.properties
@@ -0,0 +1,9 @@
+spring.application.name=spirng-boot-mail
+
+spring.mail.host=smtp.163.com
+spring.mail.username=xxoo@xxoo.com
+spring.mail.password=xxoo
+spring.mail.default-encoding=UTF-8
+
+mail.fromMail.addr=xxoo@xxoo.com
+
diff --git a/spring-boot-mail/src/main/resources/templates/emailTemplate.html b/spring-boot-mail/src/main/resources/templates/emailTemplate.html
new file mode 100644
index 0000000..387a4fb
--- /dev/null
+++ b/spring-boot-mail/src/main/resources/templates/emailTemplate.html
@@ -0,0 +1,11 @@
+
+
+
+
+ Title
+
+
+ 您好,这是验证邮件,请点击下面的链接完成验证,
+ 激活账号
+
+
\ No newline at end of file
diff --git a/spring-boot-mail/src/test/java/com/neo/ApplicationTests.java b/spring-boot-mail/src/test/java/com/neo/ApplicationTests.java
new file mode 100644
index 0000000..569db81
--- /dev/null
+++ b/spring-boot-mail/src/test/java/com/neo/ApplicationTests.java
@@ -0,0 +1,17 @@
+package com.neo;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class ApplicationTests {
+
+ @Test
+ public void contextLoads() {
+ System.out.println("hello world");
+ }
+
+}
diff --git a/spring-boot-mail/src/test/java/com/neo/service/MailServiceTest.java b/spring-boot-mail/src/test/java/com/neo/service/MailServiceTest.java
new file mode 100644
index 0000000..91c4bbf
--- /dev/null
+++ b/spring-boot-mail/src/test/java/com/neo/service/MailServiceTest.java
@@ -0,0 +1,65 @@
+package com.neo.service;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+import org.thymeleaf.TemplateEngine;
+import org.thymeleaf.context.Context;
+
+/**
+ * Created by summer on 2017/5/4.
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest
+public class MailServiceTest {
+
+ @Autowired
+ private MailService mailService;
+
+ @Autowired
+ private TemplateEngine templateEngine;
+
+ @Test
+ public void testSimpleMail() throws Exception {
+ mailService.sendSimpleMail("ityouknow@126.com","test simple mail"," hello this is simple mail");
+ }
+
+ @Test
+ public void testHtmlMail() throws Exception {
+ String content="\n" +
+ "\n" +
+ " hello world ! 这是一封html邮件!
\n" +
+ "\n" +
+ "";
+ mailService.sendHtmlMail("ityouknow@126.com","test simple mail",content);
+ }
+
+ @Test
+ public void sendAttachmentsMail() {
+ String filePath="e:\\tmp\\application.log";
+ mailService.sendAttachmentsMail("ityouknow@126.com", "主题:带附件的邮件", "有附件,请查收!", filePath);
+ }
+
+
+ @Test
+ public void sendInlineResourceMail() {
+ String rscId = "neo006";
+ String content="这是有图片的邮件:
";
+ String imgPath = "C:\\Users\\summer\\Pictures\\favicon.png";
+
+ mailService.sendInlineResourceMail("ityouknow@126.com", "主题:这是有图片的邮件", content, imgPath, rscId);
+ }
+
+
+ @Test
+ public void sendTemplateMail() {
+ //创建邮件正文
+ Context context = new Context();
+ context.setVariable("id", "006");
+ String emailContent = templateEngine.process("emailTemplate", context);
+
+ mailService.sendHtmlMail("ityouknow@126.com","主题:这是模板邮件",emailContent);
+ }
+}