大概弄懂了Java Mail的使用方法


今天花了一下午把Java Mail的API文檔看完了,對java mail api有了一個大致的了解.
然后發現Jakarta的commons api更加簡單,方便.
看一個最簡單的commons api發郵件的例子:

SimpleEmail email = new SimpleEmail();
email.setHostName("mail.myserver.com");
email.addTo("jdoe@somewhere.org", "John Doe");
email.setFrom("me@apache.org", "Me");
email.setSubject("Test message");
email.setMsg("This is a simple test of commons-email");
email.send();

主頁是這里:
http://jakarta.apache.org/commons/index.html

就這么幾行,就搞定...
不過我還是決定學習使用Java mail,畢竟看了一下午時間...

簡單筆記:

1.發郵件使用smtp(Simple Mail Transfer Protocol)協議
讀郵件使用廣泛使用的pop3(Post Office Protocol)協議

2.Java Mail里的幾個類,我看文檔時邊看邊記了幾個:
Message:
抽象類,定義了一組一個郵件的屬性和內容.

Folder:
Messages是存儲在Folder對象中.Folder提供了fetch,appden,copy和delete消息的方法.

客戶創造一個合適的Message子類.最后用Transport.send()發出消息

Session:
定義了客戶和網絡之間整體和個人郵件屬性的接口.
final類,不能被繼承.

Address:
郵件地址

BodyPart:
實現Part接口.

Multipart:
繼承Message,是一個包含Bodypart的容器.

Flages:
說明在floder里面的message的狀態.
answered:這個message已經被回答.
draft:這個message是草稿.
...

Strore:
定義了一個包含Folder的數據庫
Folder里面是Message.

Folder:
可以包含subfolders.
store的getDefaultFolder()返回用戶默認目錄的根目錄

The JavaBeans Activation Framework
決定傳輸數據的類型.

Setting Message Content
兩種方法:
setDataHandler
setContent

Viewing a Message:
一般是3種: text/plain, text/html, multipart/mixed

Transport:
用來發送郵件,可以接受到成功或失敗的事件.
session.getTransport(Address address);

session.getTransport(String protocol);
protocol寫為:"SMTP"

3.然后嘛,就開始寫個能夠發郵件和收郵件的小程序熱熱身咯.

我是拿163,和126開刀的,它們的服務器域名是:
smtp.163.com
pop.126.com

smtp.126.com
pop.126.com

很快就寫出了程序,程序的難點主要是密碼認證那里,開始有點不知道怎么寫.
認證代碼是這樣的:
// create some properties and get the default Session
   Properties props = new Properties();
   props.put("mail.smtp.host", "host");
   Session session = Session.getDefaultInstance(
     props,
     new Authenticator() {
       public PasswordAuthentication
          getPasswordAuthentication() {
            return new PasswordAuthentication("username", "password");
       }
   });
發給大部分郵件都沒有問題,進自己的郵箱也能讀.

程序輸出:

EHLO eclipse
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN NTLM
250-AUTH=LOGIN PLAIN NTLM
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN NTLM"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN NTLM"
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 dXNlcm5hbWU6
cmFuZ3dlaV81MjA=
334 UGFzc3dvcmQ6
NjI0NTk0Mg==
235 Authentication successful
DEBUG SMTP: use8bit false
MAIL FROM:<rangwei_520@126.com>
250 Mail OK
RCPT TO:<rangwei@gmail.com>
250 Mail OK
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   rangwei@gmail.com
DATA
354 End data with <CR><LF>.<CR><LF>
Message-ID: <367156.01136471509015.JavaMail.Rey@eclipse>
Date: Thu, 5 Jan 2006 22:31:48 +0800 (CST)
From: rangwei_520@126.com
To: rangwei@gmail.com
Subject: Just a test
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

I love you
.
250 Mail OK queued as smtp5,N8DrAagtvUMwBzQA.1486S2
QUIT

Mail was sent successfully.

S: +OK Welcome to coremail Mail Pop3 Server (126com[030901])
C: USER rangwei_520
S: +OK core mail
C: PASS 123456
S: +OK 1 message(s) [5932 byte(s)]
Name:      
Full Name:
URL:       pop3://rangwei_520@pop.126.com/
Is Directory

Name:      INBOX
Full Name: INBOX
URL:       pop3://rangwei_520@pop.126.com/INBOX
Total Messages:  -1
New Messages:    -1
Unread Messages: -1

C: QUIT
S: +OK core mail

呵呵,一個不錯的開端.
只有一個小問題,收件箱里3種郵件數量顯示的是-1,太累了,明天再看是怎么回事.

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com