简述
单体项目,集成spring-boot-starter-web
与spring-boot-starter-mail
.用于测试邮件配置
pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mail</groupId>
<artifactId>mail-sender</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.14</version>
</parent>
<properties>
<java.version>1.8</java.version>
<version.assembly.plugin>3.3.0</version.assembly.plugin>
<version.jar.plugin>3.2.0</version.jar.plugin>
<version.dependency.plugin>2.7</version.dependency.plugin>
<version.deploy.plugin>2.8.2</version.deploy.plugin>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--主入口-->
<mainClass>com.mail.sender.SendApplication</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
TestController.java
package com.mail.sender.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
JavaMailSender javaMailSender;
@Value("${app.sender}")
private String from;
@Value("${app.mailto}")
private String mailto;
@GetMapping("/send")
public String test() throws MessagingException, UnsupportedEncodingException {
// 创建一个邮件消息
MimeMessage message = javaMailSender.createMimeMessage();
// 创建 MimeMessageHelper
MimeMessageHelper helper = new MimeMessageHelper(message, false);
// 发件人邮箱和名称
helper.setFrom(from);
// 收件人邮箱
helper.setTo(mailto);
// 邮件标题
helper.setSubject("Hello");
// 邮件正文,第二个参数表示是否是HTML正文
helper.setText("Hello <strong> World</strong>!", true);
// 发送
javaMailSender.send(message);
return "success";
}
}
SendApplication.java
package com.mail.sender;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {"com.mail.sender"})
public class SendApplication {
public static void main(String[] args) {
SpringApplication.run(SendApplication.class, args);
}
}
配置文件
application.yml
app:
sender: userxxx@example.com
mailto: mailtoxxx@example.com
spring:
application:
name: mail-sender
mail:
# 指定邮件服务器地址
host: xx.xx.xx.xx
# 登录账户 (邮箱地址或用户名,视具体要求修改 )
username: userxxx
# 登录密码
password: passwordxxxxx
# 端口
port: 25
# 默认编码
default-encoding: UTF-8
# 使用的协议
protocol: smtp
# 其他的属性
properties:
mail:
debug: true
smtp:
auth: true
auth.mechanisms: NTLM #NLTM支持
auth.ntlm.domain: xxx.com
startttls:
enable: false
logging:
config: classpath:mail-sender-logback-spring.xml
file:
path: ./logs
server:
port: 8801
logback配置
mail-sender-logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<springProperty scope="context" name="logFile" source="logging.file.name" defaultValue="mail-sender"/>
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="./logs" />
<springProperty scope="context" name="logLevel" source="logging.levels" defaultValue="info" />
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/${logFile}.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%17.17t] %-40.40logger{39} %-4L: %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${logPath}/${logFile}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logPath}/${logFile}-error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %5p ${PID:- } --- [%17.17t] %-40.40logger{39} %-4L: %m%n</pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>${logPath}/${logFile}-error.%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<root level="${logLevel}">
<appender-ref ref="errorAppender"/>
<appender-ref ref="fileAppender"/>
<appender-ref ref="CONSOLE"/>
</root>
<logger name="org.hibernate.SQL" level="INFO"/>
<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="INFO"/>
<logger name="org.springframework.web" level="INFO"/>
<logger name="org.springframework.data" level="INFO"/>
</configuration>