每天进步一点点,距离大腿又近一步!阅读本文大概需要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. vue-learning:28 - component - 组件事件的修饰符`.native / .sync`,以及组件属性`model`

    组件事件的修饰符.native / .sync,以及组件属性model .native 原生事件修饰符 在一个组件中,如果我们为其绑定一个原生的点击事件@click,基本是无效的. 在vue中对组件绑 ...

  2. C++虚继承初识

    struct Employee { ... }; struct Manager : Employee { ... }; struct Worker : Employee { ... }; struct ...

  3. 异步加载css 和 谷歌浏览器各实用小工具介绍

    异步加载css资源 加开页面首屏显示速度使我们前端一直在追求的目标,而css资源在这些优化中同样也是不可或缺的. 一个网站可能有一部分css资源是必须的,他需要在页面渲染完之前就被加载完,并和html ...

  4. 彩票历史记录分析工具 -- 通过实例学习wpf开发

    前言 虽然本人对彩票不感兴趣,仍然有不少人对此情有独钟.他们花大量时间精力去分析彩票的历史记录,企图发现规律,为下一次投注做指导,希望“赢的“”概率增大.不管研究历史记录是否有意义,我用软件实现了对彩 ...

  5. Redis安装(单机及各类集群,阿里云)

    Redis安装(单机及各类集群,阿里云) 前言 上周,我朋友突然悄悄咪咪地指着手机上的一篇博客说,这是你的博客吧.我看了一眼,是之前发布的<Rabbit安装(单机及集群,阿里云>.我朋友很 ...

  6. python 连接 SQL Server 数据库

    #!/usr/bin/python # -*- coding:utf-8 -*- import pymssql import pyodbc host = '127.0.0.1:1433' user = ...

  7. .NET Core 3 WPF MVVM框架 Prism系列之命令

    本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的命令的用法 一.创建DelegateCommand命令 我们在上一篇.NET Core 3 WPF MVVM框架 Prism系列之 ...

  8. Visual Studio 2015 编译生成支持HTTPS协议的libcurl静态库

    由于之前的工作需要使用libcurl 开源项目库 在各种研究后发现无法使用HTTPS协议 后来经过各种翻阅文档,发现需要OpenSSL支持,这个需要自己下载并自己编译生成 lib 或者 dll 至于O ...

  9. Django简介、安装和入门

    python三大主流Web框架 Django 优点:大而全,自身携带的组件和功能特别特别多,类似于航空母舰 缺点:过于笨重,所需功能不多时,Django依然提供这些功能,占据内存 Flask 优点:小 ...

  10. 跌宕起伏的java帝国史,剖析谷歌甲骨文长达8年的版权战争

    这篇博文是我在B站上发的一个科普java的视频文案整理,本来发过一次了,但是有几种不严谨的地方只能删掉重新发了一下,内容如标题,感兴趣的码农朋友可以观看视频的版本,欢迎提提意见啥的,感谢~https: ...