20-javamail

一、为什么要学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      
用于发送邮件

 

 

 

 

 

 

 

时间: 2024-08-14 21:32:24

20-javamail的相关文章

转 JavaMail发送和接收邮件API(详解)

一.JavaMail概述:     JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分.     厂商所提供的JavaMail服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括: SMTP:简单邮件传输协议,用于发送电子邮件的传输协议: POP3:用于接收电子邮件的标准协议: IMAP:互联网消息协议,是POP3的替代协议.     这三种协议都有对应SSL加密传输的协议,分别是SMTPS,POP

使用JavaMail创建邮件和发送邮件

欢迎加入QQ群交流:1群已满,请加2群466355109,技术不全没关系,只要有交流的心就尽管来吧 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段  --用于指明发件人 to字段      --用于指明收件人 subject字段  --用于说明邮件主题 cc字段     -- 抄送,将邮件发送给收件人的同时抄送给另一个收件人,收件人可以看到邮件

javaMail发邮件

使用javaMail发送电子邮件需要两个jar包:activation.jar和mail.jar.具体代码如下: index.jsp: 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> 2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

在用JavaMail邮件中,邮件中的图片以附件形式发送到服务器,这样在邮件内容和附件中都显示出来,怎样才能让图片不在附件中显示出来?

问题描述 在用JavaMail邮件中,邮件中的图片以附件形式发送到服务器,这样图片在邮件内容和附件中都显示出来,怎样才能让图片不在附件中显示出来? 解决方案 解决方案二:抓个分,谢谢楼主解决方案三:我感觉不是javamail的问题了吧.是ui客户端设置问题吧.解决方案四:在一篇文章里提到了这点说能隐藏,但是没给出具体实现方法,我觉得能隐藏更好,如果全显示在附件中太难看了刚申请的号,就20分~解决方案五:看看张孝祥的邮件视频.我还没看完..好像有.解决方案六:不显示你就在程序中不让它们显示出来三.

javamail 验证总是错误

问题描述 我编写javamail总是报错.错误的原因是验证错误就是下面的这句:transport.connect((String)props.get("mail.smtp.host"),username,password);请大家帮小妹,多谢... 解决方案 解决方案二:我用javamail做了一个邮件系统..把你用的邮件服务器及访问协议.重要代码说一下.解决方案三:在邮件服务器上是不是有这个账号.传的三个参数有没有问题.解决方案四:引用1楼powerchuangwai的回复: 我用j

JavaMail邮件传输(SMTP) 门户网站SMTP服务器

1.在编程中,我们可以使用JavaMail来进行邮件传输. 我们可以在自己的电脑上安装安装邮件服务器apache-james-2.3.2,或者直接使用门户网站的邮件服务器来进行邮件传输. 本篇讲述使用门户网站的邮件服务器,用java程序来进行邮件传输. 2.邮件传输的协议有SMTP(简单邮件传输协议)和POP3(邮局协议). 并不是所有的提供邮箱的网站都会对用户开通SMTP服务器.可以使用的SMTP服务器都需要身份验证的,当然是不可以匿名发邮件的啦.下面给出了腾讯和网易公布的SMTP和POP3服

20 5-IOS 审核被拒因为20.5的问题

问题描述 IOS 审核被拒因为20.5的问题 彩票APP总是一直因为一个授权的问题被拒,前辈们知道怎么解决吗? Reasons 20.5: Apps that offer real money gaming (e.g. sports betting, poker, casino games, horse racing) or lotteries must have necessary licensing and permissions in the locations where the App

精简的20个PS功能常用快捷键

  一.常用的热键组合 1.图层混合模式快捷键:正常(Shift + Option + N),正片叠底(Shift + Option + M),滤色(Shift + Option + S),叠加(Shift + Option + O),柔光(Shift + Option + F),饱和度(Shift + Option + T),颜色(Shift + Option + C),明度(Shift + Option + Y). 2.混合模式循环热键(Shift + – /+):该组快捷键方便你在整套混合

100*100像素的bmp图片缩小为20*30大小的bmp图片是怎样的原理 ?

问题描述 100*100像素的bmp图片缩小为20*30大小的bmp图片是怎样的原理 ? 百度的答案好像说是涉及傅里叶算法,没有搞明白,求大神说明原理,是相邻的几个像素平均成一个像素? 解决方案 这类算法很多,基本原理是"映射".就是说这个算法定义了如何把一个像素点映射到目标像素点.比如一个10x10的图片,你想把它拉成20x20的图片,你可以设计一个最简单的算法,把(x,y)[x,y从1开始]映射到(2x-1,2y-1)(2x-1,2y)(2x,2y-1)(2x,2y)这四个点. 解

[Qt教程] 第20篇 2D绘图(十)图形视图框架(下)

[Qt教程] 第20篇 2D绘图(十)图形视图框架(下) 楼主  发表于 2013-5-4 15:43:02 | 查看: 861| 回复: 0 图形视图框架(下) 版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 环境:Windows Xp + Qt 4.8.4+QtCreator 2.6.2 目录 三.场景(QGraphicsScene) (一)场景层 (二)索引算法 (三)边界矩形 (四)图形项查找 (五)事件处理和传播 (