当前位置: 首页 > news >正文

JAVA实现发送电子邮件

  相信大家对于网站也好,手机app也好,用户注册时,需要进行邮箱验证的功能特别好奇吧,本篇我将带领大家一起实现一下这个简单而又神奇的小功能,让我们的应用也可以加入这些神奇的元素。废话不多说,下面开始我们今天的内容介绍。

  首先实现上面的功能,需要一个固定的发送电子邮件的邮箱地址,这里我们就以我们经常使用的QQ邮箱为例实现一下这个功能。

  第一件事,你需要开启QQ邮箱的IMAP/SMAP服务:

  登录QQ邮箱-->设置-->账号-->开启IMAP/SMAP与P0P3/SMAP

  

  

  

  开启这两个时,你会获得两个密码,接下来的内容中会使用到。

  发送电子邮件服务,需要使用到一下三个JAR包:mail.jar;activation.jar;cos.jar,这里我已经帮大家整理好了,下载地址:http://pan.baidu.com/s/1sknsZOp,下载好我们的JAR包,导入到我们工程的lib目录下即可。

  发送电子邮件的JAVA代码如下:

import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 使用QQ邮箱IMAP/SMTP的实现发送电子邮件
 * 2015-12-06
 */
public class Mail {
    public static void main(String[] args) {
        Properties props = new Properties();
        props.put("mail.smtp.host", "smtp.qq.com");
        props.put("mail.smtp.port", "587");//使用465或587端口
        props.put("mail.smtp.auth", "true");//设置使用验证
        props.put("mail.smtp.starttls.enable","true");//使用 STARTTLS安全连接
        try {
            PopupAuthenticator auth = new PopupAuthenticator();
            Session session = Session.getInstance(props, auth);
            session.setDebug(true);//打印Debug信息
            MimeMessage message = new MimeMessage(session);
            Address addressFrom = new InternetAddress(PopupAuthenticator.mailuser + "@qq.com", "");//第一个参数为发送方电子邮箱地址;第二个参数为发送方邮箱地址的标签
            Address addressTo = new InternetAddress("xxxxxxxxxxxx", "");//第一个参数为接收方电子邮箱地址;第二个参数为接收方邮箱地址的标签
            message.setSubject("发送电子邮件的主题");
            message.setText("发送电子邮件内容");
            message.setFrom(addressFrom);
            message.addRecipient(Message.RecipientType.TO, addressTo);
            message.saveChanges();
            Transport transport = session.getTransport("smtp");
            transport.connect("smtp.qq.com", PopupAuthenticator.mailuser, PopupAuthenticator.password);
            transport.send(message);
            transport.close();
            System.out.println("发送成功");
        } catch (Exception e) {
            System.out.println(e.toString());
            System.out.println("发送失败");
        }
    }
}

class PopupAuthenticator extends Authenticator {
    public static final String mailuser = "1453296946";//发送方邮箱'@'符号前的内容:1453296946@qq.com
    public static final String password = "xxxxxxxxxxxx";//成功开启IMAP/SMTP服务,在第三方客户端登录时,腾讯提供的密码。注意不是邮箱密码

    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(mailuser, password);
    }
}

  是不是很简单,接下来我们的邮箱验证、登录验证、注册验证、找回密码是不是都找到实现的方向啦。

相关文章:

  • JS组件系列——表格组件神器:bootstrap table
  • JavaScript数组使用sort排序
  • junit测试时,出现java.lang.IllegalStateException: Failed to load ApplicationContext
  • 我的Android进阶之旅------Android【设置】-【语言和输入法】-【语言】列表中找到相应语言所对应的列表项...
  • BZOJ1075 : [SCOI2007]最优驾车drive
  • SharePoint自动化系列——Create a local user and add to SharePoint
  • iOS 轻量级的数据库leveldb
  • 混合的方式开启服务
  • JSDOM对象控制HTML元素
  • NSObject
  • android 环境搭建
  • AJAX 跨域请求 - JSONP获取JSON数据 jsson和jsonp
  • 点击失去焦点的文字
  • mac 终端 常用命令
  • HP ProLiant DL380 G6 服务器 - 清 BIOS 的方法
  • .pyc 想到的一些问题
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • CEF与代理
  • CSS实用技巧
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • echarts的各种常用效果展示
  • Flannel解读
  • IDEA 插件开发入门教程
  • iOS 系统授权开发
  • iOS 颜色设置看我就够了
  • JAVA多线程机制解析-volatilesynchronized
  • js学习笔记
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • Vue小说阅读器(仿追书神器)
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 读懂package.json -- 依赖管理
  • 浮现式设计
  • 关于extract.autodesk.io的一些说明
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 技术:超级实用的电脑小技巧
  • 今年的LC3大会没了?
  • 面试遇到的一些题
  • 深度学习入门:10门免费线上课程推荐
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 算法---两个栈实现一个队列
  • 微信小程序设置上一页数据
  • 一个SAP顾问在美国的这些年
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • # include “ “ 和 # include < >两者的区别
  • #Lua:Lua调用C++生成的DLL库
  • (¥1011)-(一千零一拾一元整)输出
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (离散数学)逻辑连接词
  • (四)c52学习之旅-流水LED灯
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world