java mail

1、爲何要學javamail

大部分的web應用都須要集成郵件發送功能 java

例如: web

1給新註冊的用戶發一封註冊成功郵件(通常會包含一個激活的鏈接目的是爲了驗證郵件的真僞) 服務器

2給網站全部的用戶發送最近的優惠活動 網站

3用戶長時間未登錄網站,發送一封郵件進行提醒 ui

上述的三種狀況,咱們不可能人工地爲每一個用戶發送郵件,這時就須要應用程序具有自動發送郵件的功能 編碼

2、javamail中的基本概念

1. 郵件服務器

在 internet 網上發送和接收郵件都必須經過一個專門服務器,處理郵件的服務器咱們稱爲郵件服務器 spa

如今不少門戶網站都擁有本身的郵件服務器,例如:sinasohu163 命令行

2. 電子郵箱

電子郵箱是指用戶在郵件服務器上申請的帳戶, code

郵件服務器會爲每一個帳戶分配必定的空間用於存儲發送和接收的郵件 ip

通俗地理解, 郵件服務器就比如生活中的郵局,電子郵箱就比如生活中的信箱

咱們發送一封電子郵件就須要將郵件發送給對方電子郵箱所在的服務器,對方能夠等待服務器將信件送到郵箱或直接去服務器上收取郵件

3. 傳輸協議 

在互聯網上任何數據的傳輸都須要遵照協議,好比ie與服務器的數據交互遵循的是http協議

郵件在發送過程當中也須要遵照必定的協議

1)用戶發送一封電子郵件須要遵循 SMTP 協議

       ehlo 主機名  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.comSMTP服務器: 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軟件 完成郵件的發送和接收

3、寫java程序發送mail

1. Mime 協議

2. javamail 

Session 與郵件服務器的會話

MimeMessage   Mime消息

MimeMultipart Mime消息體

MimeBodyPart  Mime消息體個部分數據

Transport       用於發送郵件

相關文章
相關標籤/搜索