1、springboot + Java Mail + Html

项目结构:

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.lfy.cn</groupId>
<artifactId>springbootTest-1.0.0</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>springbootTest-1.0.0</name>
<url>http://maven.apache.org</url> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springboot支持Java Mail的配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

pod-scale-alarm.html

<body style="color: #666; font-size: 14px; font-family: 'Open Sans',Helvetica,Arial,sans-serif;">
<div class="box-content" style="width: 80%; margin: 20px auto; max-width: 800px; min-width: 600px;">
<div class="header-tip" style="font-size: 12px;
color: #aaa;
text-align: right;
padding-right: 25px;
padding-bottom: 10px;">
Confidential - Scale Alarm Use Only
</div>
<div class="info-top" style="padding: 15px 25px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
background: {0};
color: #fff;
overflow: hidden;
line-height: 32px;">
<img src="cid:icon-alarm" style="float: left; margin: 0 10px 0 0; width: 32px;" /><div style="color:#010e07"><strong>{5}</strong></div>
</div>
<div class="info-wrap" style="border-bottom-left-radius: 10px;
border-bottom-right-radius: 10px;
border:1px solid #ddd;
overflow: hidden;
padding: 15px 15px 20px;">
<div class="tips" style="padding:15px;">
<p style=" list-style: 160%; margin: 10px 0;">Hi,</p>
<p style=" list-style: 160%; margin: 10px 0;">{1}</p>
</div>
<div class="time" style="text-align: right; color: #999; padding: 0 15px 15px;">{2}</div>
<br>
<table class="list" style="width: 100%; border-collapse: collapse; border-top:1px solid #eee; font-size:12px;">
<thead>
<tr style=" background: #fafafa; color: #333; border-bottom: 1px solid #eee;">
{3}
</tr>
</thead>
<tbody>
{4}
</tbody>
</table>
</div>
</div>
</body>

SendEmailController.java

package com.lfy.cn.springbootTest;

import org.apache.commons.lang3.time.DateFormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.MessageFormat;
import java.util.Date;
import java.util.Objects;
import java.util.Properties; @RestController
public class SendEmailController { private static final Logger LOGGER = LoggerFactory.getLogger(SendEmailController.class); @RequestMapping("/SendEmailController/send")
public String send(String[] args) throws MessagingException, IOException { JavaMailSenderImpl javaMailSender = new JavaMailSenderImpl();
javaMailSender.setUsername("xxxxxxxxxx@163.com"); //代理邮箱
javaMailSender.setPassword("授权码");
javaMailSender.setHost("smtp.163.com");
javaMailSender.setPort(25);
javaMailSender.setDefaultEncoding("UTF-8");
Properties props = new Properties();
props.setProperty("mail.smtp.host", "smtp.163.com");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.smtp.auth", "true"); //SSL加密
props.setProperty("mail.smtp.connectiontimeout", "20000");
props.setProperty("mail.smtp.timeout", "20000");
javaMailSender.setJavaMailProperties(props); MimeMessage message = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, true, "UTF-8");
helper.setTo(new String[]{"xxxxxxx@qq.com"});
helper.setCc("xxxxxxxxx@163.com");
helper.setFrom("xxxxxxxxx@163.com");
helper.setSubject("Html邮件模板");
helper.setText(buildContent(), true); String alarmIconName = "image.jpg";
ClassPathResource img = new ClassPathResource(alarmIconName);
if (Objects.nonNull(img)) {
helper.addInline("icon-alarm", img);
}
helper.addAttachment("image.jpg", new ClassPathResource("image.jpg"));//添加附件
javaMailSender.send(message); return "send email.";
} private static String buildContent() throws IOException { //加载邮件html模板
String fileName = "pod-scale-alarm.html";
InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName);
BufferedReader fileReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuffer buffer = new StringBuffer();
String line = "";
try {
while ((line = fileReader.readLine()) != null) {
buffer.append(line);
}
} catch (Exception e) {
LOGGER.error("读取文件失败,fileName:{}", fileName, e);
} finally {
inputStream.close();
fileReader.close();
} String contentText = "以下是服务实例伸缩信息, 敬请查看.<br>below is the information of service instance scale, please check. ";
//邮件表格header
String header = "<td>分区(Namespace)</td><td>服务(Service)</td><td>伸缩结果(Scale Result)</td><td>伸缩原因(Scale Reason)</td><td>当前实例数(Pod instance number)</td>";
StringBuilder linesBuffer = new StringBuilder();
linesBuffer.append("<tr><td>" + "myNamespace" + "</td><td>" + "myServiceName" + "</td><td>" + "myscaleResult" + "</td>" +
"<td>" + "mReason" + "</td><td>" + "my4" + "</td></tr>"); //绿色
String emailHeadColor = "#10fa81";
String date = DateFormatUtils.format(new Date(), "yyyy/MM/dd HH:mm:ss");
//填充html模板中的五个参数
String htmlText = MessageFormat.format(buffer.toString(), emailHeadColor, contentText, date, header, linesBuffer.toString(),"服务实例水平伸缩通知"); //改变表格样式
htmlText = htmlText.replaceAll("<td>", "<td style=\"padding:6px 10px; line-height: 150%;\">");
htmlText = htmlText.replaceAll("<tr>", "<tr style=\"border-bottom: 1px solid #eee; color:#666;\">");
return htmlText;
}
}

App.java

package com.lfy.cn.springbootTest;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; /**
* Hello world!
*
*/
@SpringBootApplication
public class App
{
public static void main( String[] args )
{
SpringApplication.run(App.class,args);
}
}

运行结果:

在App.java中以鼠标邮件启动springboot。

Java - Java Mail邮件开发(2)springboot +Java Mail + Html的更多相关文章

  1. 用java自带jdk开发第一个java程序

    [学习笔记] 1.用java自带jdk开发第一个java程序:   下面要讲的eclipse要想正常工作,需要先学会配置这里的jdk.jdk要想正常工作,需先学会配置JAVA_HOME和ClassPa ...

  2. Java - Java Mail邮件开发(3)spring +Java Mail + Velocity

    1.spring + Java Mail + Velocity 项目结构: 注意:用户包中引入各包的顺序问题.如velocity-2.1. beans.xml <?xml version=&qu ...

  3. java mail Received fatal alert: handshake_failure java 无法发送邮件问题 java 发送qq邮件(含源码)

     java 无法发送邮件问题 java 发送qq邮件 报错:java mail Received fatal alert: handshake_failure (使用ssl) javax.mail.M ...

  4. 【JavaWeb项目】一个众筹网站的开发(九)邮件开发

    Java官方支持邮件开发,Javax-mail jdk中默认没有,需要另外下载 apache的基于Javax-mail开发了commons-mail,更加简单高效,推荐使用 一.电子邮件接收和发送协议 ...

  5. Java-JavaMail邮件开发(1)Java Mail

    1.仅使用Java Mail 使用163邮箱作为代理服务器: 引入依赖: <dependency> <groupId>com.sun.mail</groupId> ...

  6. Java发送Email邮件及SpringBoot集成

    一:普通方式发送 1.导包 <!--Java MAil 发送邮件API--> <dependency> <groupId>javax.mail</groupI ...

  7. 传智播客张孝祥java邮件开发随笔01

    01_传智播客张孝祥java邮件开发_课程价值与目标介绍 02_传智播客张孝祥java邮件开发_邮件方面的基本常识 03_传智播客张孝祥java邮件开发_手工体验smtp和pop3协议 第3课时 关于 ...

  8. Java Mail 邮件发送Demo

    上周公司的项目要求开发邮件发送功能.自己在网上跟着教程边学边做了一下午,现在基本开发完成了.由于一个同事也想看下该怎么写,顺便学习下.所以我就写成了一遍教程,顺便巩固下邮件发送里面的内容. Demo ...

  9. java深入探究10-文件上传组件FileUpload,邮件开发

    1.文件上传组件FileUpload 1)java提供了文件上传的工具包 需要引入:commons-fileupload-1.2.1.jar(文件上床组件核心包) commons-oi-1.4(封装了 ...

随机推荐

  1. ESP8266内置的定时器库--Ticker库

    Ticker的功能非常简单,就是规定时间后调用函数 总体上,根据功能可以把方法分为两大类: 定时器管理方法: 定时器启用方法: detach()     停止定时器 active()    定时器是否 ...

  2. hdu 3376 : Matrix Again【MCMF】

    题目链接 题意:给定一个n*n的矩阵,找一条路,从左上角到右下角再到左上角,每个点最多经过一次,求路径上的点的权值的最大和. 将矩阵中每个点拆点,点容量为1,费用为点权值的相反数.每个点向自己右侧和下 ...

  3. 拉链法解决hashtable冲突问题

    拉链法解决冲突.拉链法解决冲突的做法是将所有的相同Hash值的key放在一个链表中,比如key3和key14在hash之后都是0,那么在数组的键为0的地方存储这两个值,形式是链表.如果不能理解我的文字 ...

  4. ubuntu 安装 tar.gz 文件

    ubuntu 安装 tar.gz 文件 本文链接:https://blog.csdn.net/caloriesung/article/details/81536144 tar zxvf FileNam ...

  5. Android应用系列:仿MIUI的Toast动画效果实现

    前言 相信有些人用过MIUI,会发现小米的Toast跟Android传统的Toast特么是不一样的,他会从底部向上飞入,然后渐变消失.看起来效果是挺不错的,但是对于Android原生Toast是不支持 ...

  6. (55)Linux驱动开发之一驱动概述

                                                                                                      驱动 ...

  7. CodeChef---- February Challenge 2018----Points Inside A Polygon

    链接:https://www.codechef.com/FEB18/problems/POINPOLY Points Inside A Polygon Problem Code: POINPOLY Y ...

  8. android和网络连接相关的类URL,URLConnection,HttpURLConnection,HttpClient

    这几个类都是用于和服务器端的连接,有些功能都能够实现,关系是: 一.URL URL标识着网络上的一个资源:该类包含一些URL自身的方法,如获取URL对应的主机名称,端口号,协议,查询字符串外,还有些方 ...

  9. 读取hibernate.cfg.xml文件

    new Configuration().configure().buildSessionFactory() new Configuration()默认是读取hibernate.properties 所 ...

  10. bash脚本计算某程序的进程数

    脚本里面有时候需要判断某个程序是否启动,以及有几个进程下面用nginx来做实例 显示所有的nignx进程 ps -ef|grep nginx |grep -v grep 其中grep -v grep表 ...