《電子技術應用》
您所在的位置:首頁 > 其他 > 业界动态 > 在Linux下利用JavaMail收发邮件

在Linux下利用JavaMail收发邮件

2009-01-06
作者:吴旭

1 引言?

?? 電子郵件是Internet上最早使用的工具之一。隨著網絡的不斷普及,它已成為我們學習和工作中必不可少的通信工具。與此同時,linux的普及程度不斷提高,人們逐漸認識到了它的優越性,強大的,可靠的,可擴展的,靈活的,可配置的,多用戶的,多任務的并且免費的操作系統。在linux上的各種應用開發也變得日益重要。電子郵件便是其中重要的一個方面。借助JavaMail可以很方便地實現在linux上收發郵件。?

Java語言的網絡能力早已被人們所熟知,再加上JavaMail更是如虎添翼。JavaMail是基于Java的標準化的電子郵件應用編程接口。它提供了一系列抽象的概念,一個管理電子郵件的通用框架。JavaMail提供訪問電子郵件系統的能力,以及創建和傳送新郵件消息的能力。它能很容易地把郵件功能組合到軟件中。?

本篇文章將介紹如何在linux下通過配置DNS,實現imap ,smtp服務器,使用JavaMail實現收發郵件的功能。?

2.概述?

??? JavaMail是一個純java API ,因此可以不依賴于任何已安裝的系統。充分地體現了平臺無關性。在運行的時候,不需要任何特定的設置。只需要提供用來連接和接收郵件的郵件服務器所需的信息就可以了。?

??? 圖1概述了JavaMail的體系結構。采用分層方式,把實現細節和編程接口分開。當應用程序訪問郵件服務或向郵件服務發送消息時,利用JavaMail來請求實現。返回該實現的一個實例,然后?應用程序就可以用該實例來檢索或發送郵件。實現的實際細節對應用程序開發者透明。

??? 雖然應用程序可以請求某個特殊協議的實現,但是郵件服務的接口保持不變。?????????????????

??? 在linux 下,通過配置DNS來建立郵件收發服務器。這樣,Internet郵件服務無論是在網絡環境下還是在單機下測試均可以使用。(不同之處是網絡環境下使用真實IP,單機下使用localhost) 在本例中,?以www.javamail.com作為郵件收發服務器。圖2顯示了DNS的名?稱解析過程,具體內容本文不在介紹。?????????????? ?

??? 第3部分將詳細介紹DNS的配置過程。

3.DNS的配置(設IP為192.168.10.104)?

(1)? 修改/etc/named.conf文件,新建兩個域(正向域和反向域)?

正向域??? zone? “javamail.com” IN? {?

???????????????? type? master;?

???????????????? file? “javamail.com” ;?

???????????????? allow-update { none;};?

????????? };?

反向域???? zone? “10.168.192.in-addr.arpa”? IN? {?

???????????????? type? master;?

???????????????? file? “javamail.com1” ;?

???????????????? allow-update { none;};?

????????? };?

(2)? 在/var/named/下建立數據庫文件,可通過復制已有文件生成?

正向域文件?? cp? /etc/named/localhost.zone?????? /etc/named/javamai.com?

反向域文件?? cp? /etc/named/named.local???????? /etc/named/javamail.com1?

(3)? 編輯新生成的數據庫文件javamail.com和javamail.com1?

javamail.com內容:?

$TTL? 86400?

@?????? ???IN? SOA? ns.javamail.com??? root.javamail.com.(?

????????????????????? 20030615?

?????????????????????? 3H?

?????????????????????? 15M?

?????????????????????? 1W?

?????????????????????? 1D? )?

@??????????? IN?? NS? ns.javamail.com.?

ns??????????? IN?? A??? 192.168.10.104?

www????????? IN?? A??? 192.168.10.104?

javamail.com.?? IN?? MX? 1?? ns.javamail.com.?

javamail.com1內容:?

?$TTL? 86400?

@????????? IN? SOA? ns.javamail.com.? root.javamail.com.(?

????????????????????? 1997022700?

?????????????????????? 28800?

?????????????????????? 14400?

?????????????????????? 3600000?

?????????????????????? 86400? )?

@??????????? IN?? NS? ns.javamail.com.?

104???????? IN?? PTR?? ns.javamail.com.?

(4)? 啟動服務 ?

service named start?

(5)? 測試?

ping?? www.javamail.com?? ?

若能ping通,則配置成功。?

4.編程細節?

??? 在配置好DNS后,我們使用www.javamail.com作為郵件收發服務器。?

在linux上新建一個帳號,例java,作為郵件用戶。?

發送郵件?

?????? 需提供郵件接收者的電子郵件地址和SMTP服務器的名字。?

?????? 關鍵語句:?

??????? Message?? message = new MimeMessage (mySession);?

??????? Message.setSubject(“Using JavaMail”);?

??????? Message.setContent (“This message is sent by JavaMail……….”, “text/plain”);?

??????? InternetAddress? toAddr =? new InternetAddress ( to );?

??????? Message.setRecipient (Message.RecipientType.TO, toAddr);?

??????? InternetAddress? fromAddr = new InternetAddress (java@javamail.com, “SendMail”); ?

??????? Message.setFrom(fromAddr);?

??? Transport.send(message);?

?檢索郵件?

??????? 需提供使用的協議(IMAP或POP3),郵件服務的主機名,用戶名(本例是java)和密碼。?

?(1)連接服務器?

Store? myStore? =? mySession.getStore(protocol);?

MyStore.connect (host, username, password );?

?(2)打開文件夾?

郵件系統在文件夾中存儲消息。默認文件夾是INBOX?

Folder? myFolder = myStore.getFolder(“INBOX”);?

MyFolder.open(Folder.READ_ONLY);?

?(3)獲得消息?

建立一個消息數組,存放從第一條消息到最后一條。?

Int messagecount = myFolder.getMessageCount();?

Message[]? message = myFolder.getMessages();?

?(4)遍歷消息數組中的元素,顯示消息的發送者和消息主題。?

For( int I = 0; I < message.length; I++)?

{?

Address[]? fromAddr? =? message[I].getFrom();?

System.out.println? ( fromAddr[0]? +? “:” +?

????????????????? Message[I].getSubject());?

??????????????? }?

????JavaMail? API 的一個突出好處是提供了可在編碼時透明選擇郵件協議接口。不管是IMAP還是POP3,訪問郵件文件夾的代碼都是相同的,只需很少修改,或者根本不用修改就可用于將來的郵件協議。?

5.結束語?

????通過JavaMail能夠很輕松地實現郵件的收發,在linux下也不例外,但需要進行一些相應的配置。Linux與java地結合,能夠更加體現linux的開放性和java的平臺無關性,同時也提高了安全性。相信java會在linux上更加耀眼。?

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产精品偷伦免费视频观看的| 国产在线一区二区三区播放| 久久伊人精品天天| 日韩在线视频中文字幕| 欧美日本亚洲视频| 国产欧美 在线欧美| 亚洲欧美精品在线观看| 日本中文字幕成人| 国产精品1234| 一区二区视频在线播放| 久久成年人免费电影| 国产成人欧美在线观看| 国产日本欧美一区| 精品少妇在线视频| 欧美精品自拍视频| 久久久久久九九| 中文网丁香综合网| 国产99久久久欧美黑人| 日本精品一区二区三区四区 | 日韩av不卡播放| 久久久精品网站| 不卡一区二区三区视频| 精品久久中出| 日韩在线精品视频| 欧美人成在线视频| 五月天亚洲综合情| 欧美激情精品在线| 国严精品久久久久久亚洲影视| 欧美韩国日本精品一区二区三区| 国产精品久久久久久久乖乖| 国产精品久久久久久av下载红粉 | 精品人妻一区二区三区四区在线| 婷婷五月色综合| 亚洲中文字幕久久精品无码喷水| 一区中文字幕在线观看| 亚洲欧洲精品在线观看| 亚洲国产成人不卡| 日韩中文在线视频| 久久天天躁夜夜躁狠狠躁2022 | 国产精品久久九九| 久久夜精品va视频免费观看|