package com.heeexy.example.util;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import java.util.Date;

import java.util.Properties;public classSendEmail {//发件人的邮箱和授权码

private final String myEmailAccount = "邮箱@qq.com";//发送的邮箱

private final String myEmailPassword = "授权码";private String receiveMailAccount = null;private String info=null;//信息内容

public voidsetReceiveMailAccount(String receiveMailAccount) {this.receiveMailAccount =receiveMailAccount;

}public voidsetInfo(String info) {this.info =info;

}//发件人邮箱的 SMTP 服务器地址, 必须准确, 不同邮件服务器地址不同, 一般(只是一般, 绝非绝对)格式为: smtp.xxx.com//网易163邮箱的 SMTP 服务器地址为: smtp.163.com 腾讯: smtp.qq.com

private String myEmailSMTPServer = "smtp.qq.com";public voidSend() throws Exception {//1. 创建参数配置, 用于连接邮件服务器的参数配置

Properties props = new Properties(); //参数配置

props.setProperty("mail.transport.protocol", "smtp"); //使用的协议(JavaMail规范要求)

props.setProperty("mail.smtp.host", myEmailSMTPServer); //发件人的邮箱的 SMTP 服务器地址

props.setProperty("mail.smtp.auth", "true"); //需要请求认证//PS: 某些邮箱服务器要求 SMTP 连接需要使用 SSL 安全认证 (为了提高安全性, 邮箱支持SSL连接, 也可以自己开启),//如果无法连接邮件服务器, 仔细查看控制台打印的 log, 如果有有类似 “连接失败, 要求 SSL 安全连接” 等错误,//打开下面 /* ... */ 之间的注释代码, 开启 SSL 安全连接。//SMTP 服务器的端口 (非 SSL 连接的端口一般默认为 25, 可以不添加, 如果开启了 SSL 连接,//需要改为对应邮箱的 SMTP 服务器的端口, 具体可查看对应邮箱服务的帮助,//QQ邮箱的SMTP(SLL)端口为465或587, 其他邮箱自行去查看)

final String smtpPort = "465";

props.setProperty("mail.smtp.port", smtpPort);

props.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

props.setProperty("mail.smtp.socketFactory.fallback", "false");

props.setProperty("mail.smtp.socketFactory.port", smtpPort);//2. 根据配置创建会话对象, 用于和邮件服务器交互

Session session =Session.getDefaultInstance(props);

session.setDebug(true); //设置为debug模式, 可以查看详细的发送 log//3. 创建一封邮件

MimeMessage message =createMessage(session, myEmailAccount, receiveMailAccount,info);//4. 根据 Session 获取邮件传输对象

Transport transport =session.getTransport();//5. 使用 邮箱账号 和 密码 连接邮件服务器, 这里认证的邮箱必须与 message 中的发件人邮箱一致, 否则报错//

//PS_01: 成败的判断关键在此一句, 如果连接服务器失败, 都会在控制台输出相应失败原因的 log,//仔细查看失败原因, 有些邮箱服务器会返回错误码或查看错误类型的链接, 根据给出的错误//类型到对应邮件服务器的帮助网站上查看具体失败原因。//

//PS_02: 连接失败的原因通常为以下几点, 仔细检查代码://(1) 邮箱没有开启 SMTP 服务;//(2) 邮箱密码错误, 例如某些邮箱开启了独立密码;//(3) 邮箱服务器要求必须要使用 SSL 安全连接;//(4) 请求过于频繁或其他原因, 被邮件服务器拒绝服务;//(5) 如果以上几点都确定无误, 到邮件服务器网站查找帮助。//

//PS_03: 仔细看log, 认真看log, 看懂log, 错误原因都在log已说明。

transport.connect(myEmailAccount, myEmailPassword);//6. 发送邮件, 发到所有的收件地址, message.getAllRecipients() 获取到的是在创建邮件对象时添加的所有收件人, 抄送人, 密送人

transport.sendMessage(message, message.getAllRecipients());//7. 关闭连接

transport.close();

}/**

* 创建一封只包含文本的简单邮件

*

* @param session 和服务器交互的会话

* @param sendMail 发件人邮箱

* @param receiveMail 收件人邮箱

* @return

* @throws Exception*/

publicMimeMessage createMessage(Session session, String sendMail, String receiveMail,String info) throws Exception {//1. 创建一封邮件

MimeMessage message = newMimeMessage(session);//2. From: 发件人(昵称有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改昵称)

message.setFrom(new InternetAddress(sendMail, "盖特软件验证码", "UTF-8"));//3. To: 收件人(可以增加多个收件人、抄送、密送)

message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "xx用户", "UTF-8"));//4. Subject: 邮件主题(标题有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改标题)

message.setSubject("盖特软件验证码", "UTF-8");//5. Content: 邮件正文(可以使用html标签)(内容有广告嫌疑,避免被邮件服务器误认为是滥发广告以至返回失败,请修改发送内容)

message.setContent("【验证码】:"+info, "text/html;charset=UTF-8");//6. 设置发件时间

message.setSentDate(newDate());//7. 保存设置

message.saveChanges();returnmessage;

}

}

java邮箱和手机发送链接和验证码_java发送邮箱验证码相关推荐

  1. java邮箱验证码_Java实现邮箱验证码

    原标题:Java实现邮箱验证码 声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. 邮箱验证码 一般能使用邮箱注 ...

  2. java发送短信模板_java发送短信

    java发送短信一般步骤 一.在中国网建中注册用户:本程序是通过中国网建提供的SMS短信平台实现的,该平台新用户注册可以拥有免费5条普通短信和3条彩信,足够进行尝试和体验了.中国网建注册地址:http ...

  3. java 当中的验证码_Java Web中验证码的实现

    验证码本质上是一张图片,即应该用标签,其中src属性决定了这是一张什么图片,因此可以让src为某一Action,每次点击时,都会更新这个src属性. ① 前台JSP页面 My JSP 'imgcode ...

  4. java生成动态验证码_java动态生成验证码

    后台代码:RandomImageServlet.java package com.zhaoran.servlet; import java.awt.Color; import java.awt.Fon ...

  5. java 登录验证码_java实现登录验证码

    本文实例为大家分享了java实现登录验证码的具体代码,供大家参考,具体内容如下 1.ValidateCode.java import java.awt.Color; import java.awt.F ...

  6. java实现图片验证码_JAVA实现图片验证码

    一.创建image工具类 import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; i ...

  7. java 微信分享朋友圈 链接显示图片_java微信公众平台分享朋友圈

    其实分享的方法在微信官网有较为详细的文档说明,现就其中一些比较绕的步骤进行总结,有问题随时交流哈. 首先微信其实已经自带分享到朋友圈,朋友,qq空间等功能,对于开发微信专门提供了一个接口,可以根据需要 ...

  8. java短信验证码功能发送的验证码如何校验_发送短信验证码和邮箱验证码—Java实现...

    短信验证码 短信验证码都是调用一些接口来进行短信的发送,短信验证码在登录.注册等操作中使用的最广泛,本文这一节演示如何使用Java制作一个简单的短信验证码登录. 我这里演示使用的是聚合数据的短信接口( ...

  9. java邮箱发送验证码_java实现使用QQ邮箱发送验证码功能

    首先当然是导入jar包了啊 如果是maven项目可以进maven资源库进行搜索导入,在此附上地址:https://mvnrepository.com 这是需要导入的jar包  commons-emai ...

  10. java邮箱发送验证码_java 邮箱发送验证码

    packagecom.*******.util.email;importorg.apache.commons.mail.EmailException;importorg.apache.commons. ...

最新文章

  1. 优秀PHP在线教程收集
  2. poj 3378 Crazy Thairs
  3. 容器技术标准化大统一,首个开放容器标准 OCI 1.0 正式发布
  4. html的canvas标签用法,html5中关于canvas标签用法(绘图)
  5. linux 命令记录
  6. 真的凉了!熊猫直播宣布停服:主站流浪计划第一阶段开启
  7. HDU 1358 Period KMP
  8. es文件浏览器怎么用_谷歌出品的文件管理APP,比ES文件浏览器更简约
  9. 基于51/52单片机毕业设计课题选题表/毕设题目/设计资料
  10. 中兴电视盒子破解记录
  11. 【知识图谱 赵军 学习笔记】第五章 实体消歧
  12. 使用d2rq把mysql转化为rdf_D2RQ
  13. 嵩天《Python网络爬虫与信息提取》实例3:淘宝商品比价定向爬虫
  14. 数据分析第二章numpy数值运算
  15. c语言动态分配输出学生成绩,C语言之:结构体动态分配内存(利用结构体数组保存不超过10个学生的信息,每个学生的信息包括:学号、姓名和三门课(高数、物理和英语 )的成绩和平均分(整型)。)...
  16. U盘文件变成快捷方式的解决方案
  17. 软件工程大作业——设计阶段
  18. ShowMore – 免费易用的在线录屏工具(可实时添加标注)
  19. 计算机一级2019题百度云,2019全国计算机等级考试一级真题操作题.pdf
  20. Mysql-表和表记录(创建 删除 查看)

热门文章

  1. 区块链在切实改变世界的35个让人惊艳的实例数据库
  2. “后T+0”时代:基金电商人以变应变
  3. (转)密码学研究与区块链实践应该打破隔空喊话
  4. Julia: save 和load的用法 和与Matlab的效率比较
  5. 【图像隐写】基于matlab LBP数字水印嵌入攻击提取【含Matlab源码 1672期】
  6. 【阙值分割】基于matlab遗传算法自适应多阈值图像分割【含Matlab源码 1460期】
  7. AMOS结构方程模型(SEM)简介【SPSS 049期】
  8. github下载的代码、怎么使用 python_Python学习20-补充内容之GitHub安装使用
  9. python3.6.5 安装第三方库
  10. mysql text取出乱码_关于delphi2010读取MySQL数据库TEXT类型乱码的解决方案