-
Notifications
You must be signed in to change notification settings - Fork 12.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
9 changed files
with
347 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
<?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.neo</groupId> | ||
<artifactId>spring-boot-mail</artifactId> | ||
<version>1.0.0</version> | ||
<packaging>jar</packaging> | ||
|
||
<name>spring-boot-mail</name> | ||
<description>Demo project for Spring Boot and mail</description> | ||
|
||
<parent> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-parent</artifactId> | ||
<version>3.0.0</version> | ||
<relativePath/> <!-- lookup parent from repository --> | ||
</parent> | ||
|
||
<properties> | ||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | ||
<java.version>17</java.version> | ||
</properties> | ||
|
||
<dependencies> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-mail</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework</groupId> | ||
<artifactId>spring-context-support</artifactId> | ||
<version>RELEASE</version> | ||
</dependency> | ||
<dependency> | ||
<groupId>com.sun.mail</groupId> | ||
<artifactId>javax.mail</artifactId> | ||
<version>RELEASE</version> | ||
</dependency> | ||
<!-- 模板引擎 --> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-thymeleaf</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-starter-test</artifactId> | ||
</dependency> | ||
<dependency> | ||
<groupId>org.junit.vintage</groupId> | ||
<artifactId>junit-vintage-engine</artifactId> | ||
<exclusions> | ||
<exclusion> | ||
<groupId>org.hamcrest</groupId> | ||
<artifactId>hamcrest-core</artifactId> | ||
</exclusion> | ||
</exclusions> | ||
</dependency> | ||
</dependencies> | ||
|
||
<build> | ||
<plugins> | ||
<plugin> | ||
<groupId>org.springframework.boot</groupId> | ||
<artifactId>spring-boot-maven-plugin</artifactId> | ||
<configuration> | ||
<fork>true</fork> | ||
</configuration> | ||
</plugin> | ||
</plugins> | ||
</build> | ||
|
||
|
||
</project> |
12 changes: 12 additions & 0 deletions
12
spring-boot-mail/src/main/java/com/neo/MailApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.neo; | ||
|
||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
|
||
@SpringBootApplication | ||
public class MailApplication { | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(MailApplication.class, args); | ||
} | ||
} |
16 changes: 16 additions & 0 deletions
16
spring-boot-mail/src/main/java/com/neo/service/MailService.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
package com.neo.service; | ||
|
||
/** | ||
* Created by summer on 2017/5/4. | ||
*/ | ||
public interface MailService { | ||
|
||
void sendSimpleMail(String to, String subject, String content); | ||
|
||
void sendHtmlMail(String to, String subject, String content); | ||
|
||
void sendAttachmentsMail(String to, String subject, String content, String filePath); | ||
|
||
void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId); | ||
|
||
} |
140 changes: 140 additions & 0 deletions
140
spring-boot-mail/src/main/java/com/neo/service/impl/MailServiceImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,140 @@ | ||
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 jakarta.mail.MessagingException; | ||
import jakarta.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 | ||
*/ | ||
@Override | ||
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 | ||
*/ | ||
@Override | ||
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); | ||
} | ||
} | ||
} |
10 changes: 10 additions & 0 deletions
10
spring-boot-mail/src/main/resources/application.properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
spring.application.name=spirng-boot-mail | ||
|
||
spring.mail.host=smtp.126.com | ||
spring.mail.username=xxxx@126.com | ||
spring.mail.password=Zxxxxxxx | ||
|
||
spring.mail.default-encoding=UTF-8 | ||
|
||
mail.fromMail.addr=ixxxxw@126.com | ||
|
11 changes: 11 additions & 0 deletions
11
spring-boot-mail/src/main/resources/templates/emailTemplate.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
<!DOCTYPE html> | ||
<html lang="zh" xmlns:th="http://www.thymeleaf.org"> | ||
<head> | ||
<meta charset="UTF-8"/> | ||
<title>Title</title> | ||
</head> | ||
<body> | ||
您好,这是验证邮件,请点击下面的链接完成验证,<br/> | ||
<a href="#" th:href="@{ http://www.ityouknow.com/neo/{id}(id=${id}) }">激活账号</a> | ||
</body> | ||
</html> |
17 changes: 17 additions & 0 deletions
17
spring-boot-mail/src/test/java/com/neo/MailApplicationTests.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 MailApplicationTests { | ||
|
||
@Test | ||
public void contextLoads() { | ||
System.out.println("hello world"); | ||
} | ||
|
||
} |
65 changes: 65 additions & 0 deletions
65
spring-boot-mail/src/test/java/com/neo/service/MailServiceTest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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="<html>\n" + | ||
"<body>\n" + | ||
" <h3>hello world ! 这是一封html邮件!</h3>\n" + | ||
"</body>\n" + | ||
"</html>"; | ||
mailService.sendHtmlMail("ityouknow@126.com","test simple mail",content); | ||
} | ||
|
||
@Test | ||
public void sendAttachmentsMail() { | ||
String filePath="D:\\Log\\TaxCard.log"; | ||
mailService.sendAttachmentsMail("ityouknow@126.com", "主题:带附件的邮件", "有附件,请查收!", filePath); | ||
} | ||
|
||
|
||
@Test | ||
public void sendInlineResourceMail() { | ||
String rscId = "neo006"; | ||
String content="<html><body>这是有图片的邮件:<img src=\'cid:" + rscId + "\' ></body></html>"; | ||
String imgPath = "C:\\Users\\ityou\\Pictures\\logo\\smilef.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); | ||
} | ||
} |