工具类
本文使用的腾讯邮箱发送的
需要使用别的需要修改服务器地址
package com.jianhe.tech.config;
import com.jianhe.tech.entities.SafePartsStockMorowali;
import org.apache.poi.hssf.record.formula.functions.T;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.List;
import java.util.Properties;
public class SendMailUtil {
/**
* 邮件发送的方法
*
* @param to 收件人
* @param subject 主题
* @param content 内容
* @param smtp 协议
* @param host 发送服务器服务器
* @param sendName 邮件发送人
* @param sendPort 邮件发送人端口
* @param userName 邮件发送人名
* @param userPwd 邮件发送人密码
* @return 成功或失败
*/
private static final String to = "1411643154@qq.com"; // 发送邮件邮箱
private static final String userName="1453814458"; // 账户
private static final String userPwd = "bbmqedrxzlfygfca"; //授权码
private static final String host = "smtp.qq.com"; // QQ 邮件服务器
private static final String smtp = "smtp"; // 协议
private static final String subject="库存不足";
private static final String sendPort="465";
private static final String sendName="1453814458@qq.com";
// public static void main(String[] args) {
// // 您要发送给谁,标题,内容
// SendMailUtil.send( new List<SafePartsStockMorowali>,"lmc83624@163.com");
// System.out.println();
// }
public static boolean send(List<SafePartsStockMorowali> content,String to) {
// 第一步:创建Session
Properties props = new Properties();
// 指定邮件的传输协议,smtp(Simple Mail Transfer Protocol 简单的邮件传输协议)
props.put("mail.transport.protocol", smtp);
// 指定邮件发送服务器服务器 "smtp.qq.com"
props.put("mail.host", host);
// 指定邮件的发送人(您用来发送邮件的服务器,比如您的163\sina等邮箱)
props.put("mail.from", sendName);
if (true) {
props.put("mail.smtp.starttls.enable", "true");
props.put("mail.smtp.socketFactory.fallback", "false");
props.put("mail.smtp.socketFactory.port", sendPort);
}
Session session = Session.getDefaultInstance(props);
// 开启调试模式
session.setDebug(true);
try {
// 第二步:获取邮件发送对象
Transport transport = session.getTransport();
// 连接邮件服务器,链接您的163、sina邮箱,用户名(不带@163.com,登录邮箱的邮箱账号,不是邮箱地址)、密码
transport.connect(userName, userPwd);
Address toAddress = new InternetAddress(to);
// 第三步:创建邮件消息体
MimeMessage message = new MimeMessage(session);
//设置自定义发件人昵称
String nick="";
try {
nick=javax.mail.internet.MimeUtility.encodeText("剑荷系统");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
message.setFrom(new InternetAddress(nick+" <"+sendName+">"));
// //设置发信人
// message.setFrom(new InternetAddress(sendName));
// 邮件的主题
message.setSubject(subject);
//收件人
message.addRecipient(Message.RecipientType.TO, toAddress);
/*//抄送人
Address ccAddress = new InternetAddress("first.lady@whitehouse.gov");
message.addRecipient(Message.RecipientType.CC, ccAddress);*/
StringBuilder contentBuilder = new StringBuilder("<html><head></head><body><h2>库存不足配件信息</h2>");
contentBuilder.append("<table border=\"5\" style=\"border:solid 1px #E8F2F9;font-size=14px;;font-size:18px;\">");
contentBuilder.append("<tr style=\"background-color: #428BCA; color:#ffffff\"><th>配件名称</th><th>数量</th><th>所属仓库</th></tr>");
for (SafePartsStockMorowali data : content) {
contentBuilder.append("<tr>");
contentBuilder.append("<td>" + data.getUnit() + "</td>"); //第一列
contentBuilder.append("<td>" + data.getQuantity() + "</td>"); //第二列
contentBuilder.append("<td>" + data.getWarehouseName() + "</td>"); //第三列
contentBuilder.append("</tr>");
}
contentBuilder.append("</table>");
contentBuilder.append("</body></html>");
// 邮件的内容
//发送text
String contentHtml = contentBuilder.toString();
message.setContent(contentHtml, "text/html;charset=UTF-8");
// 邮件发送时间
message.setSentDate(new Date());
// message.setContent(content1,"text/html;charset=utf-8");
// 第四步:发送邮件
// 第一个参数:邮件的消息体
// 第二个参数:邮件的接收人,多个接收人用逗号隔开(test1@163.com,test2@sina.com)
transport.sendMessage(message, InternetAddress.parse(to));
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
}
本工具类是将json数据转化为HTML文本 查看
发送的邮件如图所示:
发送邮箱需要开通邮箱pop3 smtp 服务
获取授权码才能使用 在QQ邮箱设置一下
定时发送 加上 @scheduled 注解就行了
@Component
public class ScheduledUtils {
@Scheduled(cron = "0 0 09 * * ?")
public void selectSafeQuantity() {
List<SafePartsStockMorowali> safePartsStockMorowali = stockInRecordsMorowaliMapper.selectSafeQuantity();
// System.out.println(safePartsStockMorowali.size()+"--------");
if (safePartsStockMorowali.size() > 0) {
SendMailUtil.send(safePartsStockMorowali, "lmc83624@163.com");
}
}
}
如果用定时启动 启动类加上需要加上
@EnableScheduling 注解
`
使用的包
javax.mail
mail
1.4.7
``