java smtp pop3_Java基于smtp与pop3实现收发邮件的功能
前言
最近用java实现了收发邮件的功能,网上虽然已经有很多资料,但实际开发过程中还是遇到了一些问题。查阅了不少资料才最终完成,在此分享一下,希望帮助更多的人少走弯路。
背景
javaMail
JavaMail是java提供给开发者处理电子邮件相关的编程接口。它是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。我们可以基于JavaMail开发出类似于Microsoft Outlook的应用程序,完成收发邮件的功能。
JavaMail并不包含在JDK中,需要我们手动下载并导入。
JavaMail官方下载地址
想要深入了解JavaMail还是要阅读官方文档。
JavaMail官方文档
下载javax.mail.jar包,使用时导入即可。
smtp
SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。我们将利用smtp协议来发送邮件。
pop3
POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本3”。是TCP/IP协议族中的一员。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。
我们将使用pop3协议来接收邮件。
发送邮件
Talk is cheap.Show me the code!
下面是我实现的一个通过QQ邮箱的smtp服务器发送邮件的demo,通过这个demo,你将看到整个发送邮件的流程。
public static void main(String[] args){
try {
String host = "smtp.qq.com";//这是QQ邮箱的smtp服务器地址
String port = "25"; //端口号
/* *Properties是一个属性对象,用来创建Session对象 */
Properties props = new Properties();
props.setProperty("mail.smtp.host", host);
props.setProperty("mail.smtp.port", port);
props.setProperty("mail.smtp.auth", "true");
props.setProperty("mail.smtp.ssl.enable", "false");//"true"
props.setProperty("mail.smtp.connectiontimeout", "5000");
final String user = "******@qq.com";//用户名
final String pwd = "******";//密码
/* *Session类定义了一个基本的邮件对话。 */
Session session = Session.getInstance(props, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//登录用户名密码
return new PasswordAuthentication(user,pwd);
}
});
session.setDebug(true);
/* *Transport类用来发送邮件。 *传入参数smtp,transport将自动按照smtp协议发送邮件。 */
Transport transport = session.getTransport("smtp");//"smtps"
transport.connect(host,user,pwd);
/* *Message对象用来储存实际发送的电子邮件信息 */
MimeMessage message = new MimeMessage(session);
message.setSubject("邮件标题");
//消息发送者接收者设置(发件地址,昵称),收件人看到的昵称是这里设定的
message.setFrom(new InternetAddress(user,"二师兄"));
message.addRecipients(Message.RecipientType.TO,new InternetAddress[]{
//消息接收者(收件地址,昵称)
//不过这个昵称貌似没有看到效果
new InternetAddress("510172916@qq.com","大师兄"),
});
message.saveChanges();
//设置邮件内容及编码格式
//后一个参数可以不指定编码,如"text/plain",但是将不能显示中文字符
message.setContent("邮件内容..", "text/plain;charset=UTF-8");
//发送
//transport.send(message);
Transport.send(message);
transport.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
接收邮件
仍然用一个demo来总结接收邮件的过程。
public static void main(String[] args){
String protocol = "pop3";//使用pop3协议
boolean isSSL = true;//使用SSL加密
String host = "pop.qq.com";//QQ邮箱的pop3服务器
int port = 995;//端口
String username = "******@qq.com";//用户名
String password = "******";//密码
/* *Properties是一个属性对象,用来创建Session对象 */
Properties props = new Properties();
props.put("mail.pop3.ssl.enable", isSSL);
props.put("mail.pop3.host", host);
props.put("mail.pop3.port", port);
/* *Session类定义了一个基本的邮件对话。 */
Session session = Session.getDefaultInstance(props);
/* * Store类实现特定邮件协议上的读、写、监视、查找等操作。 * 通过Store类可以访问Folder类。 * Folder类用于分级组织邮件,并提供照Message格式访问email的能力。 */
Store store = null;
Folder folder = null;
try {
store = session.getStore(protocol);
store.connect(username, password);
folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);//在这一步,收件箱所有邮件将被下载到本地
int size = folder.getMessageCount();//获取邮件数目
Message message = folder.getMessage(size);//取得最新的那个邮件
//解析邮件内容
String from = message.getFrom()[0].toString();
String subject = message.getSubject();
Date date = message.getSentDate();
System.out.println("From: " + from);
System.out.println("Subject: " + subject);
System.out.println("Date: " + date);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (folder != null) {
folder.close(false);
}
if (store != null) {
store.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("接收完毕!");
}
总结
上面两个demo可以完成最简单的收发邮件功能。
想要实现更加丰富的功能,就去读文档和协议的内容吧。
对本篇博客有疑问可联系leejf1994@outlook.com交流。
java smtp pop3_Java基于smtp与pop3实现收发邮件的功能相关推荐
- java发送邮件354_基于SMTP的JAVA邮件发送程序
这个程序没有使用JavaMail API,而是根据SMTP协议的要求直接处理协议的细节发送邮件,虽然比较麻烦了一些,但是对了解邮件协议的细节很有帮助的. 本文分两部分,第一部分是SMTP命令介绍(这个 ...
- 基于SMTP协议的模拟邮件系统(计算机网络课程设计)
目录 一.设计内容 二.所用到的知识 三.需求分析 四.运行效果 1.登录与注册 2.信息管理 3.邮件发送与收取 五.部分核心代码 1.SendServlet.java(实现邮件发送) 2.Rece ...
- 微软pop3服务器,真算孤陋寡闻。。微软旗下的邮箱都支持POP3收发邮件了
偶然之间才知道微软旗下的hotmail.com live.com live.cn msn.com等等免费邮箱都已经向普通用户开放了pop3收发邮件的功能...看来我真的是老了... 一直不喜欢用微软的 ...
- 基于python的毕业论文邮箱收发系统_Python 收发Email的实现
关于Email的基础知识就不说,直接进入Python主题. 一 发送Email 简单邮件传输协议(SMTP)大家应该都很熟悉了,在python中也有一个smtplib的模块来实现发送邮件的功能,一般的 ...
- 湖南大学基于SMTP和POP3的邮件系统课程设计
这是我们2020年大三下学期计算机网络课程设计做的项目,后期准备开源到github上,这里是我们的课程设文档 1绪论 背景与目的 随着电子邮件作为人们沟通交流的主要工具,在网络中有着广泛的应用.邮件系 ...
- java smtp.126.com_Java Mail---SMTP、POP3协议-DOS下手动收发邮件演示过程
转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自 E-Mail协议简介: 邮件服务器,按照提供的服务类型,可以分为发送邮件的服务器我接收邮件的服务器. 发送 ...
- 湖南大学基于SMTP和POP3的邮件系统——计算机网络课设
基于SMTP和POP3的邮件系统,创新点较多,课设得分很高 这是2022年春季-软件工程19级计算机网络课程设计内容,下方的文档是本项目的需求文档. 本项目的所有代码(安卓端+Web端+服务端)已经完 ...
- 使用java语言基于SMTP协议手写邮件客户端
使用java语言基于SMTP协议手写邮件客户端 1. 说明 电子邮件是互联网上常见的应用,他是互联网早期的产品,直至今日依然受到广大用户的喜爱(在中国可能因为文化背景不同,电子邮件只在办公的时候常用) ...
- C# 网络编程之基于SMTP发送电子邮件
本文主要讲述基于C#网络编程的发送邮件的编程,邮件发送功能是基于邮件协议的,常见的电子邮件协议有SMTP(简单邮件传输协议).POP3(邮局协议).IMAP(Internet邮件访问协议),文章主要 ...
- EMAIL发送系统(C#+基于SMTP认证) 2.0
这个是对于 EMAIL发送系统(C#+基于SMTP认证) 1.0 的改版这个第一版是2002年11月写的,过了一年半了,才有人提意见,就修正了一下,因为后来做的项目一直用不上,也就没有注意到 前段时间 ...
最新文章
- poj3068(最小费用流)
- GAN完整理论推导与实现,Perfect!
- 最小二乘法多项式曲线拟合原理与实现--转
- SQL模糊查询 LIKE
- mysql用的cap中哪两个_分布式事务CAP定理和BASE理论
- 农村树上的野菜“刺老芽”,价格比肉还贵,这是为啥呢?
- vue中用table_element-ui中的 table 组件在vue中的使用
- 自动驾驶 8-3: 递归最小二乘法Recursive Least Squares
- c语言自动变量全局变量,C语言全局变量的一些简单介绍
- h5拍摄身份证_H5接口调用,身份证识别
- 中国天气的各个城市的id,整理成json文件记录
- C++PTA题解(1)——厘米换算英尺英寸
- 小记--解决方案: rsyslogd cpu占用率高
- 八千里路云和月,蚂蚁金服面出血,offer已拿,仰天长啸,壮怀激烈!
- 软文成功案例,给企业带来的价值不可限量
- 神策数据:2021 证券业数字新基建趋势洞察
- Win10下SCP命令免密码上传、下载工程师服务器上的文件
- autium pcb手动布线_画PCB时,一些非常好的布线技巧
- Flutter TabBar
- 机器学习自学成才的十条戒律
热门文章
- 妙招防止非法入侵Win2000/XP系统(转)
- Base64编码工具类
- secoclient在Mac下使用无法上网的解决办法
- 【J2EE】【1.HelloWorld】J2EE基础(jsp,servlet,tomcat,eclipse)
- erp的术语-jde系统
- linux 二进制编辑工具,全网最全Linux的十大十进制编辑器,要接触Linux的你摆脱不了...
- 台达b2伺服modbus通讯_台达伺服ASDA-B2使用手册-简体最新.pdf
- 在鱼池终于挖到0.01的Zcash(ZEC)了,目前正在打款
- 单片机(ISIS 7 Professional):实现简易十字路口红绿灯代码项目
- SQL SERVER 卸载清除步骤