application-yml 配置文件配置如下:
#JavaMailSender
spring:
mail:
host: smtp.163.com #邮箱服务器地址
username: xxxxx #发件人地址
password: xxxxx #邮箱的授权码
default-encoding: UTF-8
port: 994
properties:
mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
SpringBoot中使用@Value()只能给普通变量注入值,不能直接给静态变量赋值给普通变量赋值时,直接在变量声明之上添加@Value()注解即可;
当要给静态变量注入值的时候,若是在静态变量声明之上直接添加@Value()注解是无效的。
若要给静态变量赋值,可以使用set()方法,其中需要在类上加入@Component注解,方法名(例如setSendAddress)和参数名(例如sendAddress)可以任意命名,如下所示:
//邮件发送工具类
@Component
public class MailUtil {
//邮件的发送者
private static String sendAddress;
// 注入MailSender
private static JavaMailSender mailSender;
//发送邮件的模板引擎
private static FreeMarkerConfigurer freeMarkerConfigurer;
@Value("${spring.mail.username}")
public void setSendAddress(String sendAddress) {
this.sendAddress = sendAddress;
}