详细代码: https://download.csdn.net/download/qq3892997/86264195
pom.xml:
<!-- javax.mail版本依赖于Springboot的版本 -->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.19</version>
</dependency>
发送邮件代码:
public SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E"); //年月日 时分秒 周
@Value("${ldt.system.mail}") //properties文件中定义的变量值(邮件发送者)
String sender;
@Value("${spring.mail.host}")
String host;
@Value("${spring.mail.port}")
Integer port;
//以上三个变量都在properties文件中定义,因此当前类必须使用@Component让spring托管,否则@Value是无法获取到配置文件的值,
//如果huToolsendEmail方法被其他类引用了,那么需要使用@Resource引入当前类,请勿使用new xxx()的方法调用当前类的方法,因new对象不是spring托管也是无法获取到@Value的值的
public void huToolsendEmail(String text, File file) {
System.setProperty("mail.mime.splitlongparameters", "false");//设置系统值 ---处理文件名乱码
MailAccount account = new MailAccount();
account.setHost(host);
account.setPort(port);
// account.setAuth(true);//无用户名与密码就必须注释掉auth 否则报错
account.setFrom(sender);//发送人
Mail mail = Mail.create(account);
mail.setFiles(file);//带附件
mail.setTos("xxxx@xxx.com.xx");//收件人
mail.setTitle("标题");
mail.setContent("内容");//如果内容是Html格式,需要把mail.setHtml(true)设置未true,否则格式失效
mail.setHtml(true);
mail.send();
}
如果huToolsendEmail方法所在类不在启动类同模块中,且不想添加注解扫描,那么使用以下类进行获取properties文件内容:
package xxx..xxxxxxx.........xxxxx
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/*获取properties文件中的值
*
* spring托管的类可以直接使用@Value获取到properties内的值,但因为需要在公共模块中写一个公共类获取properties的值,
* 而公共模块意味着跟启动类不是同一个模块(重点是 不是同一个父文件夹),因此没办法被spring扫描到,需要在启动类中添加@MapperScan("xxx.xxx"),而又不想因为这一个类就去扫描这个文件夹
*因此就抛弃了直接使用@Value获取properties值的方式,转而使用以下代码获取配置文件内容
* */
public class ResourceUtil {
static Properties properties;
static{
properties=new Properties();
InputStream in= ResourceUtil.class.getClassLoader().getResourceAsStream("application.properties");
try {
properties.load(in);
if (in != null) {
in.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static String getValue(String key){
return properties.getProperty(key);
}
public static Properties getProperties(){
return properties;
}
}