班级建设网站,wordpress同步至订阅号,茂名市建设银行网站,品牌营销推广要怎么做提示#xff1a;文章写完后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 邮箱效果图一、pom配置二、页面编写三、配置yml四、邮件工具类五、测试发送 邮箱效果图 1.可以利用在出现问题进行邮箱提醒 2.编写html 用于在邮箱中展示的样式 提示… 提示文章写完后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 邮箱效果图一、pom配置二、页面编写三、配置yml四、邮件工具类五、测试发送 邮箱效果图 1.可以利用在出现问题进行邮箱提醒 2.编写html 用于在邮箱中展示的样式 提示以下是本篇文章正文内容下面案例可供参考
一、pom配置 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--邮件--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-mail/artifactId/dependencydependencygroupIdorg.jsoup/groupIdartifactIdjsoup/artifactIdversion1.10.3/version/dependencydependencygroupIdorg.freemarker/groupIdartifactIdfreemarker/artifactIdversion2.3.28/versionscopecompile/scope/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.22/version/dependency二、页面编写
!DOCTYPE html
htmlheadmeta charsetutf-8title系统通知邮件模板-纯文本型/title
/headbody
div stylefont-size: 14px;brbrbrbrdiv stylewidth: 600px; margin: 0 auto; background-color: #00838a; border-radius: 3px;div stylepadding: 0 15px; padding-bottom: 20px;div styleheight: 72px;diva hrefhttps://www.lplovemm.love/ target_blank relnoopenerstyletext-decoration: none;img srchttp://mall.bydauto.com.cn/pc/_nuxt/img/logo.97a8e60.svg styleheight: 72px;altBYD titleBYD/a/div/divdiv stylebackground: #fff; padding: 20px 15px; border-radius: 3px;divspan stylefont-size: 16px; font-weight: bold;待办通知/spandiv styleline-height: 24px; margin-top: 10px;div您有一条新的“span stylefont-weight: bold;订单询价/span待办编号为“span stylefont-weight: bold; idip/span”收到信息后请尽快a stylecolor: #006eff;font-weight: bold; hrefhttps://mall.bydauto.com.cn/target_blank relnoopener登录MALL系统/a处理/div/div/divdiv stylemargin-top: 30px;divspanstylefont-size: 15px; font-weight: bold; position: relative; top: -4px;流程信息/span/divtablestylewidth: 400px; border-spacing: 0px; border-collapse: collapse; border: none; margin-top: 20px;tbodytr styleheight: 45px;tdstylewidth: 150px; height: 40px; background: #F6F6F6;border: 1px solid #DBDBDB; font-size: 14px; font-weight: normal; text-align: left; padding-left: 14px;上一节点/tdtdstylewidth: 250px;height: 40px; border: 1px solid #DBDBDB; font-size: 14px; font-weight: normal; text-align: left; padding-left: 14px;订单咨询/td/trtr styleheight: 45px;tdstylewidth: 150px;height: 40px; background: #F6F6F6;border: 1px solid #DBDBDB; font-size: 14px; font-weight: normal; text-align: left; padding-left: 14px;处理人/tdtdstylewidth: 250px;height: 40px; border: 1px solid #DBDBDB; font-size: 14px; font-weight: normal; text-align: left; padding-left: 14px;张先生/td/trtr styleheight: 45px;tdstylewidth: 150px; height: 40px; background: #F6F6F6;border: 1px solid #DBDBDB; font-size: 14px; font-weight: normal; text-align: left; padding-left: 14px;当前节点/tdtdstylewidth: 250px;height: 40px; border: 1px solid #DBDBDB; font-size: 14px; font-weight: normal; text-align: left; padding-left: 14px;a stylecolor: #006eff; hrefhttps://mall.bydauto.com.cn/ target_blankrelnoopener订单询价/a/td/tr/tbody/table/divdiv stylemargin-top: 60px;margin-bottom: 10px;spanstylefont-size: 13px; font-weight: bold; color: #666;温馨提醒/spandiv styleline-height: 24px; margin-top: 10px;div stylefont-size: 13px; color: #666;使用过程中如有任何问题请联系LIMS系统管理员。/div/div/div/div/div/divdivstylewidth: 600px; margin: 0 auto; margin-top: 50px; font-size: 12px; -webkit-font-smoothing: subpixel-antialiased; text-size-adjust: 100%;pstyletext-align: center; line-height: 20.4px; text-size-adjust: 100%; font-family: Microsoft YaHei!important; padding: 0px !important; margin: 0px !important; color: #7e8890 !important;span classappleLinksCopyright © 2023-2024 北京XXXX科技股份有限公司. 保留所有权利。/span/ppstyletext-align: center;line-height: 20.4px; text-size-adjust: 100%; font-family: Microsoft YaHei!important; padding: 0px !important; margin: 0px; color: #7e8890 !important; margin-top: 10px;span classappleLinks邮件由系统自动发送请勿直接回复本邮件/span/p/div
/div
/body/html三、配置yml #配置日志logging:level:root: infoapplication:name: spring-boot-emailmvc.async.request-timeout: 20000#配置邮箱mail:default-encoding: UTF-8host: smtp.163.compassword: **********port: 465username: **********163.comproperties:mail:smtp:auth: truesocketFactory:class: javax.net.ssl.SSLSocketFactorystarttls:enable: true四、邮件工具类
package com.information.utils;import java.io.*;
import java.util.Date;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.FileSystemResource;/*** 发送邮件工具类*/
public class MailUtil {private final static Logger logger LoggerFactory.getLogger(MailUtil.class);/*** 邮件发送* param mailHost 邮件服务地址* param fromMail 发件人* param fromName 发件人名* param fromMailPwd 发件人密码* param toMails 收件人多个用英文逗号分隔* param mailTitle 邮件标题* param mailContent 邮件内容* throws Exception*/public static void sendMail(String mailHost, String fromMail, String fromName, String fromMailPwd,String toMails, String mailTitle, String mailContent) throws Exception {String[] toMailArr null;if (toMails ! null !toMails.equals()) {toMailArr toMails.split(,);} else {throw new Exception(邮件发送人不能为空);}// 邮件属性信息Properties props new Properties();props.put(mail.host, mailHost);props.put(mail.transport.protocol, smtp);props.put(mail.smtp.auth, true);Session session Session.getInstance(props); // 根据属性新建一个邮件会话//session.setDebug(true); // 是否打印调试信息toMailArr toMails.split(,);for (String to : toMailArr) {MimeMessage message new MimeMessage(session); // 由邮件会话新建一个消息对象message.setFrom(new InternetAddress(fromMail,fromName));message.setRecipient(Message.RecipientType.TO, new InternetAddress(to, fromName));// 设置收件人,并设置其接收类型为TOmessage.setSubject(mailTitle);// 设置标题message.setContent(mailContent, text/html;charsetUTF-8); // 设置邮件内容类型为htmlmessage.setSentDate(new Date());// 设置发信时间message.saveChanges();// 存储邮件信息// 发送邮件Transport transport session.getTransport();transport.connect(fromMail, fromMailPwd);transport.sendMessage(message, message.getAllRecipients());transport.close();}}/*** 读取html文件为String* param htmlFileName* return* throws Exception*/public static String readHtmlToString(String htmlFileName) throws Exception{InputStream is null;Reader reader null;try {is MailUtil.class.getClassLoader().getResourceAsStream(htmlFileName);if (is null) {throw new Exception(未找到模板文件);}reader new InputStreamReader(is, UTF-8);StringBuilder sb new StringBuilder();int bufferSize 1024;char[] buffer new char[bufferSize];int length 0;while ((length reader.read(buffer, 0, bufferSize)) ! -1){sb.append(buffer, 0, length);}return sb.toString();} finally {try {if (is ! null) {is.close();}} catch (IOException e) {logger.error(关闭io流异常, e);}try {if (reader ! null) {reader.close();}} catch ( IOException e) {logger.error(关闭io流异常, e);}}}}五、测试发送 Autowiredprivate JavaMailSender mailSender;/*** 发送者邮箱*/Value(${spring.mail.username})public String MAIL_USERNAME;/*** 发送者host*/Value(${spring.mail.host})public String MAIL_HOST;/*** 发送者秘钥*/Value(${spring.mail.password})public String PASSWORD;RequestMapping(/ip)ResponseBodypublic String bc(HttpServletRequest request){try {ListString list new LinkedList();Enumeration enumeration NetworkInterface.getNetworkInterfaces();while (enumeration.hasMoreElements()) {NetworkInterface network (NetworkInterface) enumeration.nextElement();if (network.isVirtual() || !network.isUp()) {continue;} else {Enumeration addresses network.getInetAddresses();while (addresses.hasMoreElements()) {InetAddress address (InetAddress) addresses.nextElement();if (address ! null (address instanceof Inet4Address || address instanceof Inet6Address)) {list.add(address.getHostAddress());}}}}//获取id地址String ip InetAddress.getLocalHost().getHostAddress();// 创建 HttpClient 实例CloseableHttpClient httpClient HttpClientBuilder.create().build();//根据ip地址和百度ip普通定位的ak去获取具体位置String url https://api.map.baidu.com/location/ip?ipipcoorbd09llak***********;// 创建 HttpGet 请求HttpGet httpGet new HttpGet(url);HttpResponse response httpClient.execute(httpGet);HttpEntity entity response.getEntity();// 转换为字符串String json EntityUtils.toString(entity);Map map (Map) JSONObject.parse(json); Map content (Map) map.get(content);Map point (Map) content.get(point);JSONObject jsonObject JSONObject.parseObject(point.toString());String x jsonObject.getString(x);String y jsonObject.getString(y);// 读取html模板String html MailUtil.readHtmlToString(mailTemplate.html);// 将拿到的x和y的经纬度写入模板内容Document doc Jsoup.parse(html);doc.getElementById(ip).html(ip);doc.getElementById(x).html(x);doc.getElementById(y).html(y);String result doc.toString();String fromName 小扎仙森;String toMails 1046406274qq.com;String mailTitle hello java mail;String mailContent result;/*** 邮件发送* param mailHost 邮件服务地址* param fromMail 发件人* param fromName 发件人名* param fromMailPwd 发件人密码* param toMails 收件人多个用英文逗号分隔* param mailTitle 邮件标题* param mailContent 邮件内容* throws Exception*/// 发送邮件MailUtil.sendMail(MAIL_HOST, MAIL_USERNAME,fromName, PASSWORD, toMails, mailTitle, mailContent);return 邮箱发送成功;} catch (IOException e) {e.printStackTrace();} catch (Exception e) {throw new RuntimeException(e);}return 发送失败;}