一、为什么要学javamail

大部分的web应用都需要集成邮件发送功能

例如:

1给新注册的用户发一封注册成功邮件(一般会包含一个激活的连接, 目的是为了验证邮件的真伪)

2给网站所有的用户发送最近的优惠活动

3用户长时间未登陆网站,发送一封邮件进行提醒

上述的三种情况,我们不可能人工地为每个用户发送邮件,这时就需要应用程序具备自动发送邮件的功能

二、javamail中的基本概念

1. 邮件服务器

在 internet 网上发送和接收邮件都必须通过一个专门服务器,处理邮件的服务器我们称为邮件服务器

现在很多门户网站都拥有自己的邮件服务器,例如:sina、sohu、163等

2. 电子邮箱

电子邮箱是指用户在邮件服务器上申请的账户,

邮件服务器会为每个账户分配一定的空间用于存储发送和接收的邮件

通俗地理解, 邮件服务器就好比生活中的邮局,电子邮箱就好比生活中的信箱

我们发送一封电子邮件就需要将邮件发送给对方电子邮箱所在的服务器,对方可以等待服务器将信件送到邮箱或直接去服务器上收取邮件

3. 传输协议

在互联网上任何数据的传输都需要遵守协议,比如ie与服务器的数据交互遵循的是http协议

邮件在发送过程中也需要遵守一定的协议

1)用户发送一封电子邮件需要遵循 SMTP 协议

ehlo 主机名

auth login //经过base64编码后的用户名和密码

mail from:<aaa@itcast.cn>

rcpt to:<bbb@itcast.cn>

Data   .号代表邮件内容的结束

quit

2)用户接收一封电子邮件需要遵循 POP3 协议

user<SP>username<CRLF>

pass<SP>password<CRLF>

stat<CRLF> 返回邮箱的统计信息

list<SP>[msg#]<CRLF>返回某一封邮件的统计信息

retr<SP>msg#<CRLF>  最重要的一个命令  接收指定编号的邮件

quit<CRLF>

3)邮件服务器也会根据功能的不同分为接收邮件的服务器和发送邮件的服务器

发送邮件的服务器我们习惯称为SMTP 服务器 默认监听25端口

接收邮件的服务器我们习惯称为 POP3 服务器 默认监听110端口

4) 新浪的一个电子邮箱给搜狐的一个电子邮箱发送邮件的过程如下图所示

资料

新浪服务器   POP3服务器: pop3.sina.com,SMTP服务器: smtp.sina.com

搜狐服务器    pop3.sohu.com smtp.sohu.com

4. 实验:

1) 安装一台易邮服务器,新建两个邮件账号

注册的账号是 zhangsan

电子邮箱地址: zhangsan@itcast.cn

2) 在dos命令行手动输入命令完成发送邮件(smtp)和接收邮件(pop3)

提示: 用户名和密码需要使用base64编码

String username = "aaa";

String password = "123456";

BASE64Encoder encoder = new BASE64Encoder();

System.out.println(encoder.encode(userName.getBytes()));

System.out.println(encoder.encode(password.getBytes()));

3) 通过RFC822文档实现发送一封简单邮件

该文档规定了如何写一封简单邮件

文档中规定邮件分为邮件头和邮件体两部分,两部分需要使用一个空行来分隔,邮件以一个’.’结束

邮件头

from   指定发件人

to     指定收件人

subject    指定主题

cc\bcc 指定抄送和密抄

邮件体

xxxxx

例:

ehlo

auth login

YWFh

MTIzNDU2

mail from:aaa@itcast.cn

rcpt to:bbb@itcast.cn

Data

from<aaa@itcast.cn>

to<bbb@itcast.cn>

subject<a mail>

xxxxxxxxxxxx

.

RFC822文档有漏洞,可以冒名发送邮件

3) 配置outlook软件 完成邮件的发送和接收

三、写java程序发送mail

1. Mime 协议

2. javamail

Session 与邮件服务器的会话

MimeMessage   Mime消息

MimeMultipart     Mime消息体

MimeBodyPart      Mime消息体个部分数据

Transport       用于发送邮件

20-javamail相关推荐

  1. 利用php屏蔽海外ip访问,高效实现

    <?php/*** 屏蔽海外ip访问* 使用ip2long函数得到ip转为整数的值,判断值是否在任一一个区间中* 以下是所有国内ip段* 调用方法:IschinaIp($ALLIPS)* 返回值 ...

  2. java邮件接收代码,JavaMail入门第四篇 接收邮件(示例代码)

    上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...

  3. 优秀Java程序员应该知道的20个实用开源库

    一个优秀且经验丰富的Java开发人员的特点之一是对API的广泛了解,包括JDK和第三方库.我花了很多时间学习API,特别是在阅读Effective Java 3rd Edition之后,Joshua ...

  4. 内网java发送邮件_基于JavaMail的Java邮件发送:简单邮件发送

    电子邮件的应用非常广泛,例如在某网站注册了一个账户,自动发送一封欢迎邮件,通过邮件找回密码,自动批量发送活动信息等.但这些应用不可能和我们自己平时发邮件一样,先打开浏览器,登录邮箱,创建邮件再发送.本 ...

  5. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    JavaWeb学习总结(五十二)--使用JavaMail创建邮件和发送邮件 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两 ...

  6. 还在重复造轮子?Java开发人员必知必会的20种常用类库和API

    介绍 一个有经验的Java开发人员特征之一就是善于使用已有的轮子来造车.<Effective Java>的作者Joshua Bloch曾经说过:"建议使用现有的API来开发,而不 ...

  7. Java 必知必会的 20 种常用类库和 API

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:为什么程序员都不喜欢使用switch,而是大量的 if--else if ?个人原创+1博客:点击前往,查看更多 ...

  8. JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件

    现在很多的网站都提供有用户注册功能, 通常我们注册成功之后就会收到一封来自注册网站的邮件.邮件里面的内容可能包含了我们的注册的用户名和密码以及一个激活账户的超链接等信息.今天我们也来实现一个这样的功能 ...

  9. java imap 标记已读,JavaMail通过IMAP和POP3接收未读以及设置已读邮件

    JavaMail通过IMAP和POP3接收未读以及设置已读邮件 博客分类: javamail javamailpop3imap 使用javaMail收邮件主要有两种协议,一种是pop3,一种是imap ...

  10. Javaweb学习笔记——(二十二)——————文件上传、下载、Javamail

    文件上传概述      1.文件上传的作用          例如网络硬盘,就是用来上传下载文件的.          在网络浏览器中,时常需要上传照片 2.文件上传对页面的要求          上 ...

最新文章

  1. 力所能及的做些自己喜欢和有趣的事
  2. Word 2003文件保存和另存为操作是否熟练掌握的有关测试
  3. nodejs-7. mongoDB数据库
  4. HDU2108(凹多边形还是凸多边形)
  5. 推荐8款堪称神器的良心软件
  6. R语言使用reshape2包的dcast函数将dataframe从长表到宽表(Long- to wide-format)、指定单个标识符、、表格转化的时候值不唯一设置聚合函数(均值)
  7. 研究性论文的图注应该怎么写?
  8. 【Android】事件传递:向下拦截,向上处理
  9. 第十九节:Asp.Net Core WebApi知识总结(一)
  10. 关于我的知识星球服务
  11. PWA - service worker - Workbox(未完)
  12. 「ZJOI2019」麻将
  13. js切换图片会闪动_javascript 如何实现一个闪烁图片的效果呢?
  14. 【转】Popclip的JSON格式化扩展
  15. MemoryBarrier
  16. coreldraw2022(CDR 2022)中文新增更新内容介绍win/mac
  17. 关系型数据库之MySQL8——由内而外的深化全面学习
  18. CAD2018下载、安装步骤!
  19. Android api level对照表
  20. Python教程视频千锋最新版免费分享

热门文章

  1. MySql连接查询与联合查询
  2. wxWidgets:拖放样本
  3. wxWidgets:Sizer 概览
  4. boost::python::def相关的测试程序
  5. boost::hana::back用法的测试程序
  6. Boost:循环缓冲区总和的测试程序
  7. Boost:双图和boost assign的测试程序
  8. Boost:align对齐的测试程序
  9. ITK:将自定义操作应用于图像中的每个像素
  10. ITK:创建一个大小Size