每天进步一点点,距离大腿又近一步!阅读本文大概需要5分钟

JavaMail发送邮件,简单实用,了解一下呗~

1.开启邮箱MAP/SMTP服务,获取第三方授权码

以QQ邮箱为例

2.主要代码

maven依赖

<dependency>    <groupId>javax.mail</groupId>    <artifactId>mail</artifactId>    <version>1.4</version></dependency><dependency>    <groupId>javax.activation</groupId>    <artifactId>activation</artifactId>    <version>1.1</version></dependency>

Email工具类

public class EmailUtil {    // 发件人电子邮箱    private static String from = "XXXXXXX@qq.com";    // 指定发送邮件的服务器    private static String host = "smtp.qq.com";    // 获取系统属性    private static Properties properties = System.getProperties();    private static MimeMessage message;     static       {           // 设置邮件服务器           properties.setProperty("mail.smtp.host", host);           //设置邮件服务器端口号(默认为25)           properties.setProperty("mail.smtp.port", "587");           // 是否用户认证           properties.put("mail.smtp.auth", "true");           // 获取默认session对象          Session session = Session.getDefaultInstance(properties,new Authenticator(){            public PasswordAuthentication getPasswordAuthentication()            {                //发件人邮件用户名、密码(有些可直接使用登录密码,                //而QQ邮箱需要使用第三方授权码,这个需要根据邮箱判断)                return new PasswordAuthentication("XXXXXXX@qq.com", "XXXXXXX");             }           });          try{             // 创建默认的 MimeMessage 对象              message = new MimeMessage(session);             // Set From: 头部头字段             message.setFrom(new InternetAddress(from));          }catch (MessagingException mex) {             mex.printStackTrace();          }       }     static public void sendEmail(String toUser,String ccUser,String headTitle,String htmlContent){         try {            //使用的单例模式,发送过邮件后,message中收件人,抄送人等信息不会被清空,需手动清空            //清空收件人            message.removeHeader(Message.RecipientType.TO.toString());            //添加多个收件人            message.addRecipients(Message.RecipientType.TO, new InternetAddress().parse(toUser));            //清空抄送人            message.removeHeader(Message.RecipientType.CC.toString());            //添加多个抄送人             message.setRecipients(Message.RecipientType.CC, new InternetAddress().parse(ccUser));             // 设置标题             message.setSubject(headTitle);             // 设置纯文本内容             //message.setText("测试文本", "utf-8");             // 设置html格式内容             message.setText(htmlContent, "utf-8", "html");             // 发送消息             Transport.send(message);             System.out.println("----------------Sent Email successfully------------");        } catch (AddressException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (MessagingException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }     }     static public String createHtmlContent(){         return "<html lang='en' style='margin: 0; padding: 0; font-family: Helvetica Neue, Microsoft Yahei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif; font-size: 14px; text-align: center; word-break: normal; font-weight: normal;'>"                + "<head>"                + "<style type='text/css'>body {border-width:0;margin:0}img {border:0;margin:0;padding:0}</style><base target='_blank' />"                + "</head>"                + "<p>尊敬的xxx用户:</p>"                + "<p>您好!</p>"                + "<p>您有一个审批工单待处理,可<b>点击工单号</b>跳转进入系统</p>"                + "<table border='3'  cellpadding='3'>"                + "<tr><th>工单号</th><th>工单状态</th><th>工单类型</th><th>申请日期</th><th>申请人</th><th>创建时间</th>"                + "</tr>"                + "<tr><td><a href='http://192.168.60.160:8888/PMIS/ticketManageDetail/123'>GD12345</a></td><td>待审批</td>"                + "<td>保障工单</td><td></td><td>2018-07-60</td><td>张三</td><td>2018-07-6 21:56:00</td>"                + "</tr>"                + "</table>"                + "<p style='color:gray;font-size:12px;'>若未登录系统,请登录系统后,重新点击工单号进入工单详情页面</p>"                + "<p style='font-family: Helvetica Neue, Microsoft Yahei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif; text-align: center; word-break: normal; font-weight: normal; display: block; max-width: 540px; margin: 20px auto 0; padding: 0 5px; color: #bdbdbd; font-size: 12px; line-height: 22px;'>邮件来自【XXX系统】自动提醒,无需回复。<br style='margin: 0; padding: 0; font-family: Helvetica Neue, Microsoft Yahei, Hiragino Sans GB, WenQuanYi Micro Hei, sans-serif; font-size: 14px; text-align: center; word-break: normal; font-weight: normal;'></p>"                + "</html>";     }    public static void main(String[] args){        sendEmail("XXXXXXX@qq.com","XXXXXXX@qq.com,XXXXXXX@qq.com","标题:xxx",createHtmlContent());     }

运行代码,邮件发送成功啦~


重磅好消息:小编考虑到同学们对学习资源的迫切需求,近期将整理出学习视频库和电子书库,你想要的资源全在这里,该资源永久有效,不断更新,敬请期待!

你若对某方向的资源迫切需要,可添加小编微信【381793016】,备注【资源:XXX】,小编将重点整理!

热门阅读:

java面试| 精选基础题(1)

java面试|精选基础题(2)

【推荐两款神器】不限速下载、追剧神器

实用代码| shell脚本实现定时检查应用状态

end~thanks!

欢迎关注微信“java从心

一个立志成大腿而每天努力奋斗的年轻人

期待你的到来!

如果觉得文章不错,请点个赞、分享给你的朋友呗!

实用代码|javaMail发送邮件(文末重磅资源!)的更多相关文章

  1. JAVAEE——BOS物流项目13:Quartz概述、创建定时任务、使用JavaMail发送邮件、HighCharts概述、实现区域分区分布图

    1 学习计划 1.Quartz概述 n Quartz介绍和下载 n 入门案例 n Quartz执行流程 n cron表达式 2.在BOS项目中使用Quartz创建定时任务 3.在BOS项目中使用Jav ...

  2. 30分钟玩转Net MVC 基于WebUploader的大文件分片上传、断网续传、秒传(文末附带demo下载)

    现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频.我们常用的常规上传已经能够满足当前要求了, 然而有时会出现如下问题: 文件过大(比如1G以上),超出服务端的请求大小限制: 请求时间过 ...

  3. 使用JavaMail发送邮件-从FTP读取图片并添加到邮件正文发送

    业务分析: 最近工作需要,需要从FTP读取图片内容,添加到邮件正文发送.发送邮件正文,添加附件采用Spring的MimeMessageHelper对象来完成,添加图片也将采用MimeMessageHe ...

  4. 使用JavaMail发送邮件-no object DCH for MIME type multipart/mixed报错解决

    最近需要实现一个使用Spring schedule按一定时间间隔自动触发条件发送邮件的功能,在开发的过程中,是按照先测试能发出text/html文本邮件,然后测试添加附件发送邮件,我碰到的问题是,文本 ...

  5. 源码分析 Kafka 消息发送流程(文末附流程图)

    温馨提示:本文基于 Kafka 2.2.1 版本.本文主要是以源码的手段一步一步探究消息发送流程,如果对源码不感兴趣,可以直接跳到文末查看消息发送流程图与消息发送本地缓存存储结构. 从上文 初识 Ka ...

  6. 源码分析 Alibaba sentinel 滑动窗口实现原理(文末附原理图)

    要实现限流.熔断等功能,首先要解决的问题是如何实时采集服务(资源)调用信息.例如将某一个接口设置的限流阔值 1W/tps,那首先如何判断当前的 TPS 是多少?Alibaba Sentinel 采用滑 ...

  7. 寻找一把进入 Alibaba Sentinel 的钥匙(文末附流程图)

    经过前面几篇文章的铺垫,我们正式来探讨 Sentinel 的 entry 方法的实现流程.即探究进入 Alibaba Sentinel 核心的一把钥匙. @ 目录 1.SphU.entry 流程分析 ...

  8. JavaMail发送邮件(超详细)

    一:邮件发送的基本概念 本文我将阐述使用JavaMail方式发送和接收Email的详细说明,本博客本着以后遇到类似的邮件发送需求可以直接把代码粘过去直接使用,快捷方便省时间,对于刚接触的JavaMai ...

  9. JavaMail发送邮件

    发送邮件包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄 ...

随机推荐

  1. Linux USB 和 sysfs

    由于单个 USB 物理设备的复杂性, 设备在 sysfs 中的表示也非常复杂. 物理 USB 设备 (通过 struct usb_device 表示)和单个 USB 接口(由 struct usb_i ...

  2. P1919 FFT加速高精度乘法

    P1919 FFT加速高精度乘法 传送门:https://www.luogu.org/problemnew/show/P1919 题意: 给出两个n位10进制整数x和y,你需要计算x*y. 题解: 对 ...

  3. linux_jdk,zookeeper,kafka安装

    若是在虚拟机安装最好先进行下面的安装 1.1修改各个虚拟机主机名 vi /etc/sysconfig/network 1.2修改主机名和IP的映射关系 vi /etc/hosts 1.3关闭防火墙 # ...

  4. $Codeforces\ 522D\ Closest\ Equals$ 线段树

    正解:线段树 解题报告: 传送门$QwQ$ 题目大意是说给定一个数列,然后有若干次询问,每次询问一个区间内相同数字之间距离最近是多少$QwQ$.如果不存在相同数字输出-1就成$QwQ$ 考虑先预处理出 ...

  5. 在 Win7、Win10 家庭版中启用组策略(gpedit.msc)

    Windows 家庭版并没有组策略,对于计算机维护.优化和设置非常不方便.使用以下批处理可以在不安装专业版.旗舰版的情况下启用组策略. 一.新建一个批处理脚本 1 @echo off 2 3 push ...

  6. SpringCloudAlibaba通过jib插件打包发布到docker仓库

    序言 在SpringBoot项目部署的时候,我了解到了Jib插件的强大,这个插件可以快速构建镜像发布到我们的镜像仓库当中去.于是我打算在毕设当中加上这个功能,并且整合到github actions中去 ...

  7. Excel获取当前日期和时间

    在Excel中获取当前时间 1.第一种在空的单元格内输入函数“NOW()”回车即可获取当前时间如图 2.第二种选中空单元格“按住CTRL+:”回车即可获取当前时间 3.第一种在空的单元格内输入函数“t ...

  8. 【JavaScript学习笔记】函数、数组、日期

    一.函数 一个函数应该只返回一种类型的值. 函数中有一个默认的数组变量arguments,存储着传入函数的所有参数. 为了使用函数参数方便,建议给参数起个名字. function fun1(obj, ...

  9. Deferred shading rendering path翻译

    Overview 概述 When using deferred shading, there is no limit on the number of lights that can affect a ...

  10. socket、http、udp、tcp的整理

    1.socket简介 游戏开发中最常用的便是socket,socket本质是api,是对tcp/ip的封装.tcp/ip协议族是一个网络通信模型以及一系列网络传输协议,为互联网的基础通信架构. tcp ...