一、首先在pom中添加依赖
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.5.6</version>
</dependency>
二、在resources目录下创建mail.properties文件添加配置
#服务器 (若想使用QQ邮箱,请参考第六步)
mailHost=smtp.163.com
#端口号
mailPort=25
#邮箱账号(改成自己的,此为发送邮件方的账号,注意得是163账号)
mailUsername=XXXX@163.com
#邮箱密码(改成自己的)
mailPassword=XXXX
#时间延迟
mailTimeout=25000
三、创建一个MailConfig类来配置基本信息
package com.lw.study.mail;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* @author:
* @Date: 10:30 2018/8/29
*/
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();
}
}
}
四、创建一个MailUtil类写发送邮件的方法
package com.lw.study.mail;
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;
/**
* @author:
* @Date: 10:42 2018/8/29
*/
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 com.lw.study.mail;
import javax.mail.MessagingException;
import java.io.UnsupportedEncodingException;
/**
* @author:
* @Date: 10:58 2018/8/29
*/
public class Client {
public static void main(String[] args) {
try {
//这里的邮箱是接受者的邮箱,和配置的邮箱不一样
MailUtil.sendMail("XXXXX@163.com","我来发个邮件玩玩","come on");
} catch (MessagingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
六、注意
如果运行出错:Exception in thread “main” javax.mail.AuthenticationFailedException: 535 Error: authentication failed
1.检查配置的用户名密码是否正确
2.如果在mail.properties文件中配置的服务为:smtp.163.com,那么你的邮箱必须是XXX@163.com的邮箱。
如果想改为QQ邮箱
将配置的服务改为:smtp.qq.com
那么下面的邮箱账号也必须使用XXX@qq.com了。
注意使用qq邮箱还要开启smtp设置
可以参考QQ邮箱开启SMTP服务