当前位置: 首页 > news >正文

微信公众号网站建设wordpress 底部插件

微信公众号网站建设,wordpress 底部插件,深圳网站建设 响应式设计开发,wordpress 站点语言问题#xff1a; 如何用java发送包含表格形式的邮件#xff1f; 方法#xff1a; 发用freemaker工具来替换html的表格变量#xff0c;从而动态生成了html。然后再发送这个html格式#xff08;不能用纯文本#xff09;文本即可。 优化流程#xff1a; 1、准备模板#x…问题 如何用java发送包含表格形式的邮件 方法 发用freemaker工具来替换html的表格变量从而动态生成了html。然后再发送这个html格式不能用纯文本文本即可。 优化流程 1、准备模板这里是以Excel转html为模板 2、处理模板及对模板填充内容的工具类 3、修改发送邮件的代码 所需依赖 pom.xml依赖 !-- freemarker -- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-freemarker/artifactId /dependency dependency groupIdcn.hutool/groupId artifactIdhutool-all/artifactId version5.8.4/version /dependency具体实现 1、准备模板 先用excel画一个模板如下图 然后在网上找一个excel转换html的在线转换工具 我用的是零代码 - Table在线布局工具Excel转HTML 2. 转换成功之后下载之后会得到这样一个html文件。 !DOCTYPE html html langen headmeta charsetUTF-8titlewww.lingdaima.com零代码excel转HTML/titlestyle table{border-top:1px solid #333;border-left:1px solid #333;border-spacing:0;background-color:#fff;width:100%} table td{border-bottom:1px solid #333;border-right:1px solid #333;font-size:13px;padding:5px} .font5{color:windowtext;} .xl65{text-align:left ;} /style /head bodytable stylewidth:500pt !--StartFragment-- colgroupcol width111 stylemso-width-source:userset;mso-width-alt:3552;width:83pt col width131 stylemso-width-source:userset;mso-width-alt:4192;width:98pt col width290 stylemso-width-source:userset;mso-width-alt:9280;width:218pt col width135 stylemso-width-source:userset;mso-width-alt:4320;width:101pt /colgrouptbodytr height19 td classxl65号码/td td classxl65所属运营商/td td classxl65所属号码组/td td classxl65报警时间/td /tr tr height19 td classxl6515528474394/td td classxl65万事融通/td td classxl65智慧外呼_万事融通_日产专用_品牌认证/td td classxl652024/10/24 9:35/td /tr !--EndFragment-- /tbody /table /body /html3.把这个文件修改为 alert-email-template.ftl 放到 java 项目的 resouce/ftl/目录下 该文件的内容为 !DOCTYPE html html langen headmeta charsetUTF-8style table{border-top:1px solid #333;border-left:1px solid #333;border-spacing:0;background-color:#fff;width:100%} table td{border-bottom:1px solid #333;border-right:1px solid #333;font-size:13px;padding:5px} .font5{color:windowtext;} .xl65{text-align:left ;} /style /head body div stylefont-size: 12px; margin: 10px;您好br/nbsp nbsp nbsp 本次共有${totalAmounts}个未接通号码详情请参见附件。br/下面列出的是前${topAmounts}个未接通号码详细信息。br/ /divtable stylewidth:500pt !--StartFragment--colgroupcol width111 stylemso-width-source:userset;mso-width-alt:3552;width:83ptcol width131 stylemso-width-source:userset;mso-width-alt:4192;width:98ptcol width290 stylemso-width-source:userset;mso-width-alt:9280;width:218ptcol width135 stylemso-width-source:userset;mso-width-alt:4320;width:101pt/colgrouptbodytr height19td classxl65号码/tdtd classxl65所属运营商/tdtd classxl65所属号码组/tdtd classxl65报警时间/td/tr#if items?? (items? size 0)#list items as itemtr height18td classxl66${(item.phone)!}/tdtd classxl66${(item.supplier)!}/tdtd classxl66${(item.group)!}/tdtd classxl66${(item.time)!}/td/tr/#list/#if/tbody /table /body /html 这里带$的就是需要freemaker来替换的变量。 注这里items是一个list变量。 处理模板及对模板填充内容的工具类 直接上java代码 Data public class FailedCallInfo {private String phone;private String supplier;private String group;private String time; }ListFailedCallInfo items new ArrayList();FailedCallInfo record new FailedCallInfo();record.setPhone(123456);record.setSupplier(abc);record.setGroup(group1);record.setTime(2024-10-10 12:12:00);items.add(record);MapString, Object callInfoMap new HashMap(32);//注意变量名字要和ftl模板里面的一致callInfoMap.put(items, items);callInfoMap.put(totalAmounts, 1);callInfoMap.put(topAmounts, 1);String generatedEmailBodyText null;try {generatedEmailBodyText FreemarkerUtil.generate(alert-email-template.ftl, callInfoMap);} catch (IOException e) {log.warn(email template generation failed, IOException exception:{}, e.getMessage());csvfile.delete();return;} catch (TemplateException e) {log.warn(email template generation failed, TemplateException exception:{}, e.getMessage());csvfile.delete();return;}boolean send_result EmailHelper.send(receivers, null, null, 未接通号码告警邮件, generatedEmailBodyText, attachment, xc-jsb-sjjg-unitautohome.com.cn);if (send_result) {log.info(发送告警邮件成功收件人:{}, JSON.toJSONString(receivers));} else {log.warn(发送告警邮件失败收件人:{}, JSON.toJSONString(receivers));}FreemarkerUtil.java package com.xxx.util; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException;import java.io.BufferedWriter; import java.io.IOException; import java.io.StringWriter;/*** freemarker 工具类*/ public class FreemarkerUtil {private static Configuration config null;/*** Static initialization.** Initialize the configuration of Freemarker.*/static {config new Configuration();config.setClassForTemplateLoading(FreemarkerUtil.class, /ftl/);config.setTemplateUpdateDelay(0);}public static Configuration getConfiguration() {return config;}/*** param template* return* throws Exception*/public static String generate(String template, Object obj) throws IOException, TemplateException {Configuration config getConfiguration();config.setDefaultEncoding(UTF-8);Template tp config.getTemplate(template, utf-8);StringWriter stringWriter new StringWriter();BufferedWriter writer new BufferedWriter(stringWriter);tp.setEncoding(UTF-8);tp.process(obj, writer);String htmlStr stringWriter.toString();writer.flush();writer.close();return htmlStr;}} EmailHelper.java package com.xxx.util; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility;import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.util.CollectionUtils;Slf4j public class EmailHelper {private static final String DEFAULT_SMTP_HOST 12.12.12.12;private static final Integer DEFAULT_SMTP_PORT 25;private static final String DEFAULT_MAIL_SENDER testaby.com.cn;/*** 邮件发送** param to 收件人邮件地址列表* param subject 邮件标题* param content 邮件内容* return 发送结果*/public static boolean send(ListString to, String subject, String content) {return send(to, null, null, subject, content, null);}/*** 邮件发送** param to 收件人邮件地址列表* param subject 邮件标题* param content 邮件内容* param attachments 附件* return 发送结果*/public static boolean send(ListString to, String subject, String content, ListFile attachments) {return send(to, null, null, subject, content, attachments);}/*** 邮件发送** param to 收件人邮件地址列表* param cc 抄送人邮件地址列表* param subject 邮件标题* param content 邮件内容* param attachments 附件* return 发送结果*/public static boolean send(ListString to, ListString cc, String subject, String content, ListFile attachments) {return send(to, cc, null, subject, content, attachments);}/*** 邮件发送** param to 收件人邮件地址列表* param cc 抄送人邮件地址列表* param bcc 密送人邮件地址列表* param subject 邮件标题* param content 邮件内容* param attachments 附件* param sender 发件人* return 发送结果*/public static boolean send(ListString to, ListString cc, ListString bcc,String subject, String content, ListFile attachments,String sender) {return send(DEFAULT_SMTP_HOST, DEFAULT_SMTP_PORT, sender, null, to, cc, bcc, subject, content, attachments);}/*** 邮件发送** param to 收件人邮件地址列表* param cc 抄送人邮件地址列表* param bcc 密送人邮件地址列表* param subject 邮件标题* param content 邮件内容* param attachments 附件* return 发送结果*/public static boolean send(ListString to, ListString cc, ListString bcc,String subject, String content, ListFile attachments) {return send(DEFAULT_SMTP_HOST, DEFAULT_SMTP_PORT, DEFAULT_MAIL_SENDER, null, to, cc, bcc, subject, content, attachments);}/*** 邮件发送** param smtpHost smtp服务地址* param smtpPort smtp服务端口* param sender 发送人邮箱地址* param senderPassword 发送人邮箱密码* param to 收件人邮件地址列表* param cc 抄送人邮件地址列表* param bcc 密送人邮件地址列表* param subject 邮件标题* param content 邮件内容* param attachments 附件* return 发送结果*/public static boolean send(String smtpHost, Integer smtpPort, String sender, String senderPassword,ListString to, ListString cc, ListString bcc,String subject, String content, ListFile attachments) {MimeMessage message getMimeMessage(smtpHost, smtpPort, sender, senderPassword);try {// 收件人ListInternetAddress toInternetAddressList convertToInternetAddress(to);if (CollectionUtils.isEmpty(toInternetAddressList)) {log.error(邮件收件人不能为空);return false;}message.addRecipients(Message.RecipientType.TO, toInternetAddressList.toArray(new InternetAddress[0]));// 抄送人ListInternetAddress ccInternetAddressList convertToInternetAddress(cc);if (!CollectionUtils.isEmpty(ccInternetAddressList)) {message.addRecipients(Message.RecipientType.CC, ccInternetAddressList.toArray(new InternetAddress[0]));}// 密送人ListInternetAddress bccInternetAddressList convertToInternetAddress(bcc);if (!CollectionUtils.isEmpty(bccInternetAddressList)) {message.addRecipients(Message.RecipientType.BCC, bccInternetAddressList.toArray(new InternetAddress[0]));}// 内容Multipart multipart new MimeMultipart();MimeBodyPart contentPart new MimeBodyPart();contentPart.setContent(content, text/html;charsetutf-8);multipart.addBodyPart(contentPart);// 附件if (!CollectionUtils.isEmpty(attachments)) {attachments.forEach(file - {try {MimeBodyPart filePartBody new MimeBodyPart();DataSource fileDataSource new FileDataSource(file);DataHandler dataHandler new DataHandler(fileDataSource);filePartBody.setDataHandler(dataHandler);filePartBody.setFileName(MimeUtility.encodeText(file.getName()));multipart.addBodyPart(filePartBody);} catch (Exception e) {log.error(邮件中的附件失败已经丢弃该附件{}, file.getName());}});}message.setContent(multipart);message.setFrom(new InternetAddress(sender));String mailSubject StringUtils.isNotBlank(subject) ? subject : 无主题;String activeProfile System.getProperty(spring.profiles.active);if (StringUtils.isNotBlank(activeProfile) !activeProfile.contains(online)) {mailSubject String.format( 【环境: %s】, activeProfile);}message.setSubject(mailSubject, UTF-8);message.saveChanges();Transport.send(message);return true;} catch (MessagingException ex) {log.error(error when send email., ex);return false;}}private static MimeMessage getMimeMessage(String smtpHost, Integer smtpPort, String sender, String senderPassword) {Properties properties new Properties();properties.put(mail.transport.protocol, smtp);properties.put(mail.smtp.host, smtpHost);properties.put(mail.smtp.port, smtpPort);Authenticator authenticator null;if (StringUtils.isNotBlank(sender) StringUtils.isNotBlank(senderPassword)) {authenticator new Authenticator() {Overrideprotected PasswordAuthentication getPasswordAuthentication() {return new PasswordAuthentication(sender, senderPassword);}};}properties.put(mail.smtp.auth, authenticator ! null ? true : false);Session session Session.getDefaultInstance(properties, authenticator);return new MimeMessage(session);}private static ListInternetAddress convertToInternetAddress(ListString mailAddressList) {if (CollectionUtils.isEmpty(mailAddressList)) {return new ArrayList();}ListInternetAddress mailInternetAddress new ArrayList();mailAddressList.forEach(item - {try {mailInternetAddress.add(new InternetAddress(item));} catch (AddressException e) {log.error(邮件地址错误此邮件地址不参与邮件的接收:{}, item);}});return mailInternetAddress;} }
http://www.w-s-a.com/news/496911/

相关文章:

  • 做海报在哪个网站可以找素材网址申请注册方法
  • 网站建设分哪些类别别人做的网站不能用
  • 做网站网站会怎么样全国高校校园网站联盟建设
  • 整站下载器 做网站地图地产项目网站设计
  • 创意设计网站公司手机wap网站建设多少钱
  • 甘肃省第八建设集团公司网站seo高级优化方法
  • 精美的商城网站介绍最多人用的wordpress子主题
  • 检察门户网站建设情况俄外长抵达北京
  • 老电脑做网站服务器网站在线留言如何做
  • 南宁广告公司网站建设小程序源码破解
  • 沛县做网站xlec网站建设开发方式包括哪些方面
  • 山西网站建设 哪家好四川城乡和建设厅网站
  • 有瀑布流的网站小型商城网站
  • 百石网怎么做网站二次开发软件
  • 网站域名是什么东西制作网页哪家好
  • 合肥网站建设团队简述网站内容管理流程
  • 网站广告是内容营销吗wordpress增加背景图片
  • 网站建设技术jsp课程设计响应式布局网站开发
  • 东莞网站排名优化seo套路网站怎么做的
  • 我做网站网络建站一般多少钱
  • 如何快速提升网站关键词排名房地产网站开发毕业设计
  • 做网站 提交源码 论坛sem分析是什么意思
  • 网站建设与部署阿里云大学百度付费推广有几种方式
  • 作品集怎么做网站个人简历模板免费下
  • 工业网站素材重庆关键词自动排名
  • 拖拽式网站建设费用微网站怎么做的好名字
  • 长沙电信网站备案谷歌推广怎么做最有效
  • 网站建设与管理总结报告华为开发者联盟
  • 门诊部网站建设天空建筑网站
  • 扬州市城乡建设网站高端品牌鞋子有哪些牌子