一.准备工作
创建一个springboot项目,依赖选中web就行,然后添加如下依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency>
二.再resources目录下新建一个mail.properties
#服务器 (若想使用QQ邮箱,请参考第六步) mailHost=smtp.163.com #端口号 mailPort=25 #邮箱账号(改成自己的,此为发送邮件方的账号,注意得是163账号) mailUsername=xxxxx@163.com #邮箱密码(改成自己的)我用的163.这里填163邮箱开启pop3/SMTP授权码 mailPassword=xxxxxxx #时间延迟 mailTimeout=25000
三.创建类
package demo1.controller;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
@PropertySource(value="classpath:mail.properties")
@Configuration
public class MailConfig {
public static final String PROPERTIES_DEFAULT = "mail.properties";
public static String host;
public static Integer port;
public static String userName;
public static String passWord;
public static String emailForm;
public static String timeout;
public static String personal;
public static Properties properties;
static {
init();
}
private static void init(){
properties = new Properties();
try {
//获取配置文件内容
InputStream inputStream = MailConfig.class.getClassLoader().getResourceAsStream(PROPERTIES_DEFAULT);
properties.load(inputStream);
inputStream.close();
//给属性赋值
host = properties.getProperty("mailHost");
port = Integer.parseInt(properties.getProperty("mailPort"));
userName = properties.getProperty("mailUsername");
passWord = properties.getProperty("mailPassword");
emailForm = properties.getProperty("mailUsername");
timeout = properties.getProperty("mailTimeout");
//发送人
personal = "汤姆猫";
} catch (IOException e) {
e.printStackTrace();
}
}
}
package demo1.controller;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
public class MailUtil {
private static final String HOST = MailConfig.host;
private static final Integer PORT = MailConfig.port;
private static final String USERNAME = MailConfig.userName;
private static final String PASSWORD = MailConfig.passWord;
private static final String EMAILFROM = MailConfig.emailForm;
private static final String TIMEOUT = MailConfig.timeout;
private static final String PERSONAL = MailConfig.personal;
private static JavaMailSenderImpl mailSender = createMailsender();
/**
* 配置好的工具
* @return
*/
private static JavaMailSenderImpl createMailsender(){
JavaMailSenderImpl sender = new JavaMailSenderImpl();
sender.setHost(HOST);
sender.setPort(PORT);
sender.setUsername(USERNAME);
sender.setPassword(PASSWORD);
sender.setDefaultEncoding("UTF-8");
Properties p = new Properties();
p.setProperty("mail.smtp.timeout", TIMEOUT);
p.setProperty("mail.smtp.auth", "false");
sender.setJavaMailProperties(p);
return sender;
}
/**
* 发送邮件
* @param to 接收人
* @param subject 主题
* @param html 发送内容
* @throws MessagingException
* @throws UnsupportedEncodingException
*/
public static void sendMail(String to, String subject, String html)
throws MessagingException,UnsupportedEncodingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
//设置编码
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
mimeMessageHelper.setFrom(EMAILFROM,PERSONAL);
mimeMessageHelper.setTo(to);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(html,true);
mailSender.send(mimeMessage);
}
}
四.测试类
package demo1.controller;
import javax.mail.MessagingException;
import java.io.UnsupportedEncodingException;
import java.util.Random;
public class Client {
public static void main(String[] args) {
try {
//6位随机数
Random random = new Random();
String code = "";
for (int i = 0; i < 6; i++) {
code += random.nextInt(10);
}
//这里的邮箱是接受者的邮箱,和配置的邮箱不一样,测试是标题,code是内容
MailUtil.sendMail("1746255930@qq.com","测试",code);
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
五.结果