/*
*
*注意这里直接是工具类不需要在spring配置
*
*/
package com.education.email;
import java.io.File;
import java.util.Properties;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.MailException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
@Service("emailService")
public class MailUtil {
private static final String HOST = "smtp.qq.com";//qq的smtp端口 其他邮箱的话可能会不一样
private static final String SMTP = "smtp";// smtp 需要去邮箱开通,QQ账户是 设置-账户-SMTP服务开通
private static final String USERNAME = "******@qq.com";//发送邮件的邮箱
private static final String PASSWORD = "********";//开通smtp后 他会发给你一个随机码 这里就填这个随机码
private static final int PORT = 587;// 587/465 邮箱端口 反正我用的是587
private static final String DEFAULTENCODING = "UTF-8";//编码
private static JavaMailSenderImpl senderImpl = new JavaMailSenderImpl();
private static Properties prop = new Properties();
static {
// 设定mail server
senderImpl.setHost(HOST);
senderImpl.setProtocol(SMTP);
senderImpl.setUsername(USERNAME);
senderImpl.setPassword(PASSWORD);
senderImpl.setPort(PORT);
senderImpl.setDefaultEncoding(DEFAULTENCODING);
// 设定properties
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.timeout", "500000");
// 设置调试模式可以在控制台查看发送过程
prop.put("mail.debug", "true");
senderImpl.setJavaMailProperties(prop);
}
public static void main(String args[]) {
}
/**
* 发送简单邮件
*
* @param to
* 收件人邮箱
* @param subject
* 主题
* @param content
* 内容
* @return
*/
public static boolean singleMail(String to, String subject, String content) {
String[] array = new String[] { to };
return singleMail(array, subject, content);
}
/**
* 发送简单文本邮件
*
* @param to
* 收件人邮箱数组
* @param subject
* 主题
* @param content
* 内容
* @return
*/
public static boolean singleMail(String[] to, String subject, String content) {
boolean result = true;
SimpleMailMessage mailMessage = new SimpleMailMessage();
// 设置收件人,寄件人 用数组发送多个邮件
mailMessage.setTo(to);
mailMessage.setFrom(USERNAME);
mailMessage.setSubject(subject);
mailMessage.setText(content);
// 发送邮件
try {
senderImpl.send(mailMessage);
} catch (MailException e) {
e.printStackTrace();
result = false;
}
return result;
}
/**
* 发送html邮件
*
* @param to
* 收件人
* @param subject
* 主题
* @param html
* html代码
* @return
*/
public static boolean htmlMail(String[] to, String subject, String html) {
boolean result = true;
MimeMessage mailMessage = senderImpl.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage);
try {
// 设置收件人,寄件人 用数组发送多个邮件
messageHelper.setTo(to);
messageHelper.setFrom(USERNAME);
messageHelper.setSubject(subject);
// true 表示启动HTML格式的邮件
messageHelper.setText(html, true);
// 发送邮件
senderImpl.send(mailMessage);
} catch (MessagingException e) {
result = false;
e.printStackTrace();
}
return result;
}
/**
* 发送内嵌图片的邮件 (cid:资源名)
*
* @param to
* 收件人邮箱
* @param subject
* 主题
* @param html
* html代码
* @param imgPath
* 图片路径
* @return
*/
public static boolean inlineFileMail(String[] to, String subject, String html, String filePath) {
boolean result = true;
MimeMessage mailMessage = senderImpl.createMimeMessage();
try {
// 设置true开启嵌入图片的功能
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true);
// 设置收件人,寄件人 用数组发送多个邮件
messageHelper.setTo(to);
messageHelper.setFrom(USERNAME);
messageHelper.setSubject(subject);
// true 表示启动HTML格式的邮件
messageHelper.setText(html, true);
FileSystemResource file = new FileSystemResource(new File(filePath));
messageHelper.addInline(file.getFilename(), file);
// 发送邮件
senderImpl.send(mailMessage);
} catch (MessagingException e) {
result = false;
e.printStackTrace();
}
return result;
}
/**
* 发送带附件的邮件
*
* @param to
* @param subject
* @param html
* @param filePath
* @return
*/
public static boolean attachedFileMail(String[] to, String subject, String html, String filePath) {
boolean result = true;
MimeMessage mailMessage = senderImpl.createMimeMessage();
try {
// multipart模式 为true时发送附件 可以设置html格式
MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage, true, "utf-8");
// 设置收件人,寄件人 用数组发送多个邮件
messageHelper.setTo(to);
messageHelper.setFrom(USERNAME);
messageHelper.setSubject(subject);
// true 表示启动HTML格式的邮件
messageHelper.setText(html, true);
FileSystemResource file = new FileSystemResource(new File(filePath));
// 这里的方法调用和插入图片是不同的。
messageHelper.addAttachment(file.getFilename(), file);
// 发送邮件
senderImpl.send(mailMessage);
} catch (MessagingException e) {
result = false;
e.printStackTrace();
}
return result;
}
}