Java发送邮件详解
Java发送邮件详解
本期我们学习Java如何发送邮件,Java发送邮件是以后工作较为常用的一个Java技能,想Web的邮箱验证、邮件提醒等功能,后期我也会编写一个教务的成绩提醒系统,其中,提醒的功能就是使用邮件来实现的。
1、了解邮件服务器和传输协议
- 有过Linux基础或计算机网络基础的同学都知道,要在网络上实现邮件传输,就要有专门的邮件服务器,也就是SMTP服务器,他是计算机网络中的邮局,主要负责收发邮件。
- 要想实现邮件传输,那么我们首先要知道邮局的地址,也就是SMTP地址,这样我们才能顺利的把邮件发出去。SMTP地址一般为smtp.xx.com,例如腾讯的:smtp.qq.com、163的:smtp.16.com。
- 有了邮局的地址,那么我们下一部是怎么把邮件递给邮局,这里就需要用到SMTP传输协议,SMTP传输协议的作用,就是帮我们,把邮件投递给邮局,然后邮局再将邮件,发到目标的手中。
2、事前准备
了解完SMTP传输协议之后,我们开始搭建项目。
导入Jar包
Java为SMTP传输协议开发了一个工具Jar包:mail包,我们要使用SMTP传输协议,就要先导入Jar包。这里我们创建的是Maven项目,所以直接再pom.xml中配置:
<dependencies><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.5.0-b01</version></dependency>
</dependencies>
获取邮箱授权码
邮箱授权码是使用SMTP时的凭证,首先,我们登录发送邮箱的账号,以qq邮箱为例,依次打开设置、账户。
然后找到SMTP服务,开启SMTP服务后,获取授权码:
3、编写Java代码
我们直接通过实例化一个Properties
对象,然后再Properties
对象中配置发件邮箱的信息。
此处注意事项:
- 在SMTP协议时,所输入的密码并非账号密码,而为授权码
- 每个邮箱提供商的端口号可能不同,在设置中查看相应端口号,一般为465
- 设置收件人时,可以指定一个用户或多个用户:
如果使用setRecipient只能设置一个收件人,InternetAddress为参数
如果使用setRecipients可以设置多个收件人,InternetAddress为参数
public static void main(String[] argv) throws Exception{Properties properties = new Properties();properties.put("mail.transport.protocol", "smtp");// 连接协议properties.put("mail.smtp.host", "smtp.qq.com");// 主机名properties.put("mail.smtp.port", 465);// 端口号properties.put("mail.smtp.auth", "true");properties.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用properties.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息// 得到回话对象Session session = Session.getInstance(properties);// 获取邮件对象Message message = new MimeMessage(session);// 设置发件人邮箱地址message.setFrom(new InternetAddress("i@liuxincode.cn"));// 设置收件人邮箱地址//如果使用setRecipient只能设置一个收件人,InternetAddress为参数//如果使用setRecipients可以设置多个收件人,InternetAddress为参数message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("o@liuxincode.cn")});// 设置邮件标题message.setSubject("你好");// 设置邮件内容message.setText("你好,刘欣的代码笔记欢迎您,网址:https://www.liuxincode.cn");// 得到邮差对象Transport transport = session.getTransport();// 连接自己的邮箱账户transport.connect("i@liuxincode.cn", "xxxxxxxxxxxxx");// password为stmp授权码// 发送邮件transport.sendMessage(message, message.getAllRecipients());transport.close();}
编译后成功收取到邮件:
原文地址:https://www.liuxincode.cn/articles/2019/12/26/1577332433630.html
Java发送邮件详解相关推荐
- java 发送邮件 详解
常见的邮件协议包括 : SMTP : 简单邮件传输协议,用于发送电子邮件的传输协议 POP3 : 用于接收电子邮件的标准协议 IMAP : 互联网消息访问协议,是 POP3 的替代协议 这三种协议都有 ...
- Apache Thrift - java开发详解
2019独角兽企业重金招聘Python工程师标准>>> Apache Thrift - java开发详解 博客分类: java 架构 中间件 1.添加依赖 jar <depen ...
- Java泛型详解-史上讲解最详细的,没有之一
目录 1. 概述 2. 一个栗子 3. 特性 4. 泛型的使用 4.1 泛型类 4.2 泛型接口 4.3 泛型通配符 4.4 泛型方法 4.4.1 泛型方法的基本用法 4.4.2 类中的泛型方法 4. ...
- Java虚拟机详解----JVM常见问题总结
[正文] 声明:本文只是做一个总结,有关jvm的详细知识可以参考本人之前的系列文章,尤其是那篇:Java虚拟机详解04----GC算法和种类.那篇文章和本文是面试时的重点. 面试必问关键词:JVM垃圾 ...
- java 泛型详解、Java中的泛型方法、 java泛型详解
本文参考java 泛型详解.Java中的泛型方法. java泛型详解 概述 泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用. 什么是泛型?为什么要使用泛型? 泛型,即& ...
- 最详细的java泛型详解
来源:最详细的java泛型详解 对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下. 本文参考java 泛型详解.Java中的泛型方法. ja ...
- Java异常详解及如何处理
来源:Java异常详解及如何处理 简介 程序运行时,发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常.异常发生时,是任程序自生自灭,立刻退出终止,还是输出错误给用户?或者用C语言 ...
- Java基础——Java NIO详解(一)
一.基本概念 1.I/0简介 I/O即输入输出,是计算机与外界世界的一个借口.IO操作的实际主题是操作系统.在java编程中,一般使用流的方式来处理IO,所有的IO都被视作是单个字节的移动,通过str ...
- Java基础——Java NIO详解(二)
一.简介 在我的上一篇文章Java NIO详解(一)中介绍了关于标准输入输出NIO相关知识, 本篇将重点介绍基于网络编程NIO(异步IO). 二.异步IO 异步 I/O 是一种没有阻塞地读写数据的方法 ...
最新文章
- 如何通过一个类名找到它属于哪个jar包?
- 成为一名更好的程序员:如何阅读源代码
- 为提高绩效,HR需要做的改进工作
- 【NOIP】提高组2012 同余方程
- cname 别名记录 解析过程_云解析是什么?需要购买吗?
- 前端学习(1757):前端调试值之网络条件与user-Agent的设置
- oracle数据同步异常,案例:DataGuard同步异常问题处理记录
- IBM heapAnalyzer
- Java8新特性总结 - 序
- oracle 带库,ORACLE RMAN下针对带库装置的操作
- messagebox java_如何从messagebox获得答案
- 自动化如何帮助全球共抗疫情?
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_5_InputStreamReader介绍代码实现...
- Centos中安装memcached
- OC小实例关于init方法不小心的错误
- 统计android代码行数据,Android Studio代码行数统计插件Statistics
- 关于pdf转html的个人方法,pdf转html的另类方法
- 《公路测设技术》课程网课最新作业测验考试
- 面向对象的编程(上)_方法的重载(overload)练习
- background的使用方法
热门文章
- mysqlbinlog 导出日志 乱码 sql
- [DSP 日常记录] #2 TI DSP 的简单介绍与 DSP 的一些名词解释
- 关于分布式事务 两阶段提交 一阶段提交 Best Efforts 1PC模式和事务补偿机制的研究
- Java字符串String相关
- mysqldumpnbsp;参数说明
- 联想适合计算机专业的游戏本,全球最佳游戏笔记本电脑Top 10
- 【直播聊天室】特点、构成及解决方案简介
- wps多人协作后怎么保存_wps在线协作,多人实时填表,数据统计方法
- 刚从阿里、头条面试回来,熬夜整理华为最新Java笔试题,进阶学习
- linux 连接 ftp 下载文件