天天看點

java實作收取Pop3郵件

以前玩Net的時候自己花了差不多一個暑假的時間來實作一個收取Pop3郵件的元件

,是以記憶尤為深刻~呵呵

今天無意看見Apache下的一個子項目Commons,其用途是專門做一些常用的開發元件包

比如DBPool什麼的

詳細資訊可以看這裡

<a href="http://jakarta.apache.org/commons/index.html">http://jakarta.apache.org/commons/index.html</a>

其中有個Net包,裡面包含來支援多達如下幾種協定的元件:

Supported protocols are:

FTP

NNTP

SMTP

POP3

Telnet

TFTP

Finger

Whois

rexec/rcmd/rlogin

Time (rdate) and Daytime

Echo

Discard

NTP/SNTP

呵呵!真強~~

其中就包含Pop3郵件收取協定

于是開工哦!~

首先先下一個這個包回來附加到Eclipse項目中

下包可以在這裡

<a href="http://mirror.vmmatrix.net/apache/jakarta/commons/net/binaries/commons-net-1.4.1.zip">http://mirror.vmmatrix.net/apache/jakarta/commons/net/binaries/commons-net-1.4.1.zip</a>

然後建立一個Demo.java類,敲下如下代碼:就可以收信了~簡單,當然你還要按照你的地區再編一次碼,否則中文顯示為

package Test;

import java.io.Reader;

import java.io.BufferedReader;

import org.apache.commons.net.pop3.POP3Client;

import org.apache.commons.net.pop3.POP3MessageInfo;

public class Demo {

    public static void main(String[] args) {

        POP3Client pop3 = new POP3Client();

        try {

            pop3.setDefaultPort(110);

            pop3.connect("pop.qq.com");

            // 我測試的是QQ郵件~

            // 輸入你的QQ号作為油箱名稱 QQ密碼作為郵箱密碼

            if (pop3.login("油箱名稱", "郵箱密碼")) {

                POP3MessageInfo[] p3m = pop3.listMessages();

                System.out.println("您一共有" + p3m.length + "封信件");

                for (POP3MessageInfo obj : p3m) {

                    int id = obj.number;// 獲得信件在伺服器端的唯一編碼

                    Reader red = pop3.retrieveMessage(id);

                    BufferedReader br = new BufferedReader(red);

                    while (br.readLine() != null) {

                        System.out.println(br.readLine());

                    }

                }

            }

            pop3.logout();

            pop3.disconnect();

        } catch (Exception e) {

            // TODO Auto-generated catch block

            System.out.println("失敗");

            e.printStackTrace();

        }

    }

}

繼續閱讀