1、添加pom依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
如果是Springboot工程,添加:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2、SpringBoot使用方法
- application.properties
#邮箱验证码配置
spring.mail.host=smtp.qq.com
spring.mail.username=774588585@qq.com
spring.mail.password=owtjddoiviirbfjj
- java实现方式
package com.bbg123.yikao.control;
import com.google.code.kaptcha.impl.DefaultKaptcha;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.SessionAttribute;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpSession;
@Controller
public class EmailControl {
@Autowired
private JavaMailSender mailSender;
@Autowired
private DefaultKaptcha kaptcha;
@RequestMapping(path = "/sendmail")
@ResponseBody
public void sendMail(HttpSession session,@RequestParam("title") String title){
// 使用Html格式
MimeMessage mimeMessage=mailSender.createMimeMessage();
try {
MimeMessageHelper helper=new MimeMessageHelper(mimeMessage,true);
helper.setFrom("774588585@qq.com");
helper.setTo(title);
helper.setSubject("验证码");
String code=kaptcha.createText();
session.setAttribute("emailcode",code);
mimeMessage.setText("<h1>"+code+"</h1>","utf-8","html");
mailSender.send(mimeMessage);
} catch (Exception e) {
e.printStackTrace();
}
// return "发送成功!";
/* 不带Html格式
SimpleMailMessage simpleMailMessage=new SimpleMailMessage();
simpleMailMessage.setFrom("774588585@qq.com");
simpleMailMessage.setTo("774588585@qq.com");
simpleMailMessage.setSubject("验证码");
String code=kaptcha.createText();
session.setAttribute("emailcode",code);
simpleMailMessage.setText(code);
mailSender.send(simpleMailMessage);
return "发送成功!";
*/
}
@RequestMapping(path = "/checkcode")
@ResponseBody
public String checkCode(@RequestParam("code") String code, @SessionAttribute("emailcode") String emailCode, HttpSession session){
if(code.equals(emailCode)){
session.removeAttribute("emailcode");
return "验证码正确";
}else {
return "验证码错误";
}
}
}
3、Spring工程中使用方式
- 编写配置文件mailConfig.properties
#服务器
mailHost=smtp.qq.com
#端口号
mailPort=465
#邮箱账号
mailUsername=774588585@qq.com
#邮箱授权码
mailPassword=zsccksltdxslbedb
#时间延迟
mailTimeout=25000
#发送人
mailFrom=774588585@qq.com
- 编写配置类
package com.bbg.mail;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
@Component
public class MailConfig {
private static final String PROPERTIES_DEFAULT = "mailConfig.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();
//properties.setProperty("mailFrom","cuizhixiang@feitu.biz");
host = properties.getProperty("mailHost");
port = Integer.parseInt(properties.getProperty("mailPort"));
userName = properties.getProperty("mailUsername");
passWord = properties.getProperty("mailPassword");
emailForm = properties.getProperty("mailFrom");
timeout = properties.getProperty("mailTimeout");
personal = "呼风";
} catch(IOException e){
e.printStackTrace();
}
}
}
- 表写工具类
package com.bbg.mail;
import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.UnsupportedEncodingException;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
@Component
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 emailForm = 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");
p.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
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 UnsupportedEncodingException, javax.mail.MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 设置utf-8或GBK编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(emailForm, personal);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(html, true);
mailSender.send(mimeMessage);
}
/**
* 发送带附件的邮件
*
* @param to 接受人
* @param subject 主题
* @param html 发送内容
* @param filePath 附件路径
* @throws MessagingException 异常
* @throws UnsupportedEncodingException 异常
*/
public static void sendAttachmentMail(String to, String subject, String html, String filePath) throws UnsupportedEncodingException, javax.mail.MessagingException {
MimeMessage mimeMessage = mailSender.createMimeMessage();
// 设置utf-8或GBK编码,否则邮件会有乱码
MimeMessageHelper messageHelper = new MimeMessageHelper(mimeMessage, true, "UTF-8");
messageHelper.setFrom(emailForm, personal);
messageHelper.setTo(to);
messageHelper.setSubject(subject);
messageHelper.setText(html, true);
FileSystemResource file=new FileSystemResource(new File(filePath));
String fileName=filePath.substring(filePath.lastIndexOf(File.separator));
messageHelper.addAttachment(fileName,file);
mailSender.send(mimeMessage);
}
}
接下来编写controller测试即可实现邮件发送。