实用代码|javaMail发送邮件(文末重磅资源!)
每天进步一点点,距离大腿又近一步!阅读本文大概需要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】,小编将重点整理!
热门阅读:
end~thanks!
欢迎关注微信“java从心”
一个立志成大腿而每天努力奋斗的年轻人
期待你的到来!
如果觉得文章不错,请点个赞、分享给你的朋友呗!
实用代码|javaMail发送邮件(文末重磅资源!)的更多相关文章
- JAVAEE——BOS物流项目13:Quartz概述、创建定时任务、使用JavaMail发送邮件、HighCharts概述、实现区域分区分布图
1 学习计划 1.Quartz概述 n Quartz介绍和下载 n 入门案例 n Quartz执行流程 n cron表达式 2.在BOS项目中使用Quartz创建定时任务 3.在BOS项目中使用Jav ...
- 30分钟玩转Net MVC 基于WebUploader的大文件分片上传、断网续传、秒传(文末附带demo下载)
现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频.我们常用的常规上传已经能够满足当前要求了, 然而有时会出现如下问题: 文件过大(比如1G以上),超出服务端的请求大小限制: 请求时间过 ...
- 使用JavaMail发送邮件-从FTP读取图片并添加到邮件正文发送
业务分析: 最近工作需要,需要从FTP读取图片内容,添加到邮件正文发送.发送邮件正文,添加附件采用Spring的MimeMessageHelper对象来完成,添加图片也将采用MimeMessageHe ...
- 使用JavaMail发送邮件-no object DCH for MIME type multipart/mixed报错解决
最近需要实现一个使用Spring schedule按一定时间间隔自动触发条件发送邮件的功能,在开发的过程中,是按照先测试能发出text/html文本邮件,然后测试添加附件发送邮件,我碰到的问题是,文本 ...
- 源码分析 Kafka 消息发送流程(文末附流程图)
温馨提示:本文基于 Kafka 2.2.1 版本.本文主要是以源码的手段一步一步探究消息发送流程,如果对源码不感兴趣,可以直接跳到文末查看消息发送流程图与消息发送本地缓存存储结构. 从上文 初识 Ka ...
- 源码分析 Alibaba sentinel 滑动窗口实现原理(文末附原理图)
要实现限流.熔断等功能,首先要解决的问题是如何实时采集服务(资源)调用信息.例如将某一个接口设置的限流阔值 1W/tps,那首先如何判断当前的 TPS 是多少?Alibaba Sentinel 采用滑 ...
- 寻找一把进入 Alibaba Sentinel 的钥匙(文末附流程图)
经过前面几篇文章的铺垫,我们正式来探讨 Sentinel 的 entry 方法的实现流程.即探究进入 Alibaba Sentinel 核心的一把钥匙. @ 目录 1.SphU.entry 流程分析 ...
- JavaMail发送邮件(超详细)
一:邮件发送的基本概念 本文我将阐述使用JavaMail方式发送和接收Email的详细说明,本博客本着以后遇到类似的邮件发送需求可以直接把代码粘过去直接使用,快捷方便省时间,对于刚接触的JavaMai ...
- JavaMail发送邮件
发送邮件包含的内容有: from字段 --用于指明发件人 to字段 --用于指明收件人 subject字段 --用于说明邮件主题 cc字段 -- 抄送,将邮件发送给收件人的同时抄 ...
随机推荐
- Linux 内核/sbin/hotplug 工具
如同本章中前面提过的, 无论何时一个设备从系统中增删, 都产生一个"热插拔事件". 这 意味着内核调用用户空间程序 /sbin/hotplug. 这个程序典型地是一个非常小的 ba ...
- Team Foundation Server 2015使用教程【9】:tfs用户账号切换
- 浅解 go 语言的 interface(许的博客)
我写了一个 go interface 相关的代码转换为 C 代码的样例.也许有助于大家理解 go 的 interface.不过请注意一点,这里没有完整解析 go 语言 interface 的所有细节. ...
- 0015 行高那些事:line-height
目标 理解 能说出 行高 和 高度 三种关系 能简单理解为什么行高等于高度单行文字会垂直居中 应用 使用行高实现单行文字垂直居中 能会测量行高 3.1 行高测量 行高的测量方法: 3.2 单行文本垂直 ...
- org.apache.subversion.javahl.ClientException: Item is not readable 解决办法
在使用eclise安装的插件subclipse查看svn的提交历史记录的时候,提示org.apache.subversion.javahl.ClientException: Item is not r ...
- Python简介及学习
Python简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 现在,全世界差不多有600多种编程语言,但流行的编程语 ...
- 「CF242E」XOR on Segment 解题报告
题面 长度为\(n\)的数列,现有两种操作: 1.区间异或操作 2.区间求和操作 对于每个查询,输出答案 思路: 线段树+二进制拆位 线段树区间修改一般使用的都是懒标记的方法,但是对于异或,懒标记的方 ...
- k8s-自动安装
操作环境: centos7.3 node102-master-192.168.100.102 node103-node1-192.168.100.103 node104-node2-192.168.1 ...
- Excel如何快速选定指定区域
在日常办公中我们经常遇见需要选中指定的区域,这样选种比较快捷节省时间,要比用鼠标下拉要方便很多. 1.框选的是起始的位置(A1) 2.终止位置 3.这就是我们所要选中的区域例如(A1:H21) 总结: ...
- 微信小程序之双重循环(包含左滑删除,以及数据各项处理)
<view wx:for="{{hommer}}" wx:for-item="item" wx:for-index="index" w ...