<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    用JAMES實(shí)現(xiàn)自己的郵件服務(wù)器

    應(yīng)用服務(wù)器Apache企業(yè)應(yīng)用XMLC
    簡(jiǎn)介
    James 是一個(gè)企業(yè)級(jí)的郵件服務(wù)器,它完全實(shí)現(xiàn)了smtp 和 pops 以及nntp 協(xié)議。同時(shí),james服務(wù)器又是一個(gè)郵件應(yīng)用程序平臺(tái)。James的核心是Mailet API,而james 服務(wù)齊是一個(gè)mailet的容器。它可以讓你非常容易的實(shí)現(xiàn)出很強(qiáng)大的郵件應(yīng)用程序。James開(kāi)源項(xiàng)目被廣泛的應(yīng)用于與郵件有關(guān)的項(xiàng)目中。你可以通過(guò)它來(lái)搭建自己的郵件服務(wù)器。我們可以利用Mailet API,編程接口來(lái)實(shí)現(xiàn)自己所需的業(yè)務(wù)。James集成了Avalon 應(yīng)用程序框架以及Phoenix Avalon 框架容器。Phoenix為james 服務(wù)器提供了強(qiáng)大的支持。需要說(shuō)明的是Avalon開(kāi)源項(xiàng)目目前已經(jīng)關(guān)閉。
    快速上手
    安裝james
    我這次使用的安裝包是james 2.3.1。大家可以從這里下載到http://james.apache.org/download.cgi
    現(xiàn)在讓我們開(kāi)始我們激動(dòng)人心的james之旅。首先我們將james-binary-2.3.1.zip解壓縮下載到你的安裝目錄。我們可以把這個(gè)過(guò)程理解為安裝的過(guò)程。我在這里將它解壓到c:\.并且把它改名為james.這樣我們的james就安裝好了。目錄為C:\james。很簡(jiǎn)單吧!

    準(zhǔn)備知識(shí) - 學(xué)習(xí)一些必要的知識(shí)
    在我使用james的時(shí)候讓我感覺(jué)首先理解james的應(yīng)用程序結(jié)構(gòu)是很重要的。否則你會(huì)在使用中感到很困惑。
    它的應(yīng)用程序結(jié)構(gòu)是這樣的:
    James
    |_ _apps
    |_ _bin
    |_ _conf
    |_ _ext
    |_ _lib
    |_ _logs
    |_ _tools
    我們重點(diǎn)介紹一下兩個(gè)文件夾bin 和 apps.
    bin目錄中的run.bat和run.sh是James的啟動(dòng)程序。只要記住這個(gè)重要文件就可以。
    啟動(dòng)之后控制臺(tái)顯示如下:
    Using PHOENIX_HOME: C:\james
    Using PHOENIX_TMPDIR: C:\james\temp
    Using JAVA_HOME: C:\j2sdk1.4.2_02
    Phoenix 4.2
    James Mail Server 2.3.1
    Remote Manager Service started plain:4555
    POP3 Service started plain:110
    SMTP Service started plain:25
    NNTP Service started plain:119
    FetchMail Disabled
    Apps 目錄下有個(gè)james的子目錄這個(gè)目錄是它的核心。
    james
    |_ _SAR-INF
    |_ _conf
    |_ _logs
    |_ _var
    |_mail
    |_address-error
    |_error
    |_indexes
    |_outgoing
    |_relay-denied
    |_spam
    |_spool
    |_nntp
    |_....

    |_users
    SAR-INF 下有一個(gè)config.xml是james中的核心配置文件。
    Logs 包含了與james有關(guān)的Log。調(diào)試全靠它了。
    Var 包含了一些文件夾通過(guò)它們的名字我們大概也能猜測(cè)出它們的用途。Mail主要用于存儲(chǔ)郵件。nntp主要用于新聞服務(wù)器。Users用于存儲(chǔ)所有郵件服務(wù)器的用戶。也就是郵件地址前面的東東。如:pig@sina.com的pig就是所謂用用戶。

    創(chuàng)建用戶:
    我們?cè)贘ames上建若干用戶,用來(lái)測(cè)試收發(fā)郵件。當(dāng)然如果你不用james本身的用戶也可以。James以telnet 的方式提供了接口用來(lái)添加用戶。下面我來(lái)演示一下。
    首先使用telnet來(lái)連接james的remote manager .
    1.telnet localhost 4555 回車(chē)
    2.然后輸入管理員用戶名和密碼(user/pwd : root/root 是默認(rèn)設(shè)置這個(gè)可以在config.xml中修改)
    JAMES Remote Administration Tool 2.3.1
    Please enter your login and password
    Login id:
    root
    Password:
    root
    Welcome root. HELP for a list of commands

    3.添加用戶
    adduser kakaxi kakaxi
    User kakaxi added

    Adduser mingren mingren
    User mingren added

    4.查看添加情況
    listusers
    Existing accounts 2
    user: mingren
    user: kakaxi
    得到上面的信息說(shuō)明我們已經(jīng)添加成功。


    發(fā)送器
    這個(gè)類(lèi)主要用來(lái)測(cè)試我們的郵件服務(wù)器,可以不用將其打入包中。
    java 代碼 
    package com.paul.jamesstudy;   
      
    import java.util.Date;   
    import java.util.Properties;   
      
    import javax.mail.Authenticator;   
    import javax.mail.Message;   
    import javax.mail.PasswordAuthentication;   
    import javax.mail.Session;   
    import javax.mail.Transport;   
    import javax.mail.internet.InternetAddress;   
    import javax.mail.internet.MimeMessage;   
      
    public class Mail {   
        private String mailServer, From, To, mailSubject, MailContent;   
      
        private String username, password;   
      
        private Session mailSession;   
      
        private Properties prop;   
      
        private Message message;   
      
        // Authenticator auth;//認(rèn)證   
        public Mail() {   
            // 設(shè)置郵件相關(guān)   
            username = "kakaxi";   
            password = "kakaxi";   
            mailServer = "localhost";   
            From = "kakaxi@localhost";   
            To = "mingren@localhost";   
            mailSubject = "Hello Scientist";   
            MailContent = "How are you today!";   
        }   
        public void send(){   
            EmailAuthenticator mailauth =    
    new EmailAuthenticator(username, password);   
            // 設(shè)置郵件服務(wù)器   
            prop = System.getProperties();   
            prop.put("mail.smtp.auth", "true");   
            prop.put("mail.smtp.host", mailServer);   
            // 產(chǎn)生新的Session服務(wù)   
            mailSession = mailSession.getDefaultInstance(prop,   
                    (Authenticator) mailauth);   
            message = new MimeMessage(mailSession);   
      
            try {   
            message.setFrom(new InternetAddress(From)); // 設(shè)置發(fā)件人   
            message.setRecipient(Message.RecipientType.TO,    
    new InternetAddress(To));// 設(shè)置收件人   
            message.setSubject(mailSubject);// 設(shè)置主題   
            message.setContent(MailContent, "text/plain");// 設(shè)置內(nèi)容   
            message.setSentDate(new Date());// 設(shè)置日期   
            Transport tran = mailSession.getTransport("smtp");   
            tran.connect(mailServer, username, password);   
            tran.send(message, message.getAllRecipients());   
            tran.close();   
            } catch (Exception e) {   
                e.printStackTrace();   
            }   
        }   
        public static void main(String[] args) {   
            Mail mail;   
            mail = new Mail();   
            System.out.println("sending");   
            mail.send();   
            System.out.println("finished!");   
        }   
      
    }   
      
    class EmailAuthenticator extends Authenticator {   
        private String m_username = null;   
      
        private String m_userpass = null;   
      
        void setUsername(String username) {   
            m_username = username;   
        }   
      
        void setUserpass(String userpass) {   
            m_userpass = userpass;   
        }   
      
        public EmailAuthenticator(String username, String userpass) {   
            super();   
            setUsername(username);   
            setUserpass(userpass);   
        }   
      
        public PasswordAuthentication getPasswordAuthentication() {   
            return new PasswordAuthentication(m_username, m_userpass);   
        }   
    }   


    posted on 2012-12-16 13:14 paulwong 閱讀(907) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): SPRING INTERGRATION

    主站蜘蛛池模板: 亚洲av无码专区在线| 久久久久久亚洲Av无码精品专口 | 免费福利网站在线观看| 日韩亚洲国产综合高清| 亚洲一区中文字幕久久| 亚洲人成电影院在线观看| 亚洲人av高清无码| 亚洲精品亚洲人成在线播放| 亚洲国产成人久久精品软件 | 亚洲成色WWW久久网站| 久久亚洲AV成人无码国产| 学生妹亚洲一区二区| 久久精品熟女亚洲av麻豆| 亚洲色偷偷偷综合网| 亚洲男人天堂2018av| 免费国产黄网站在线观看动图 | 久久精品国产亚洲av麻豆色欲 | 亚洲综合久久1区2区3区| 亚洲av永久无码精品网址| 一区二区亚洲精品精华液| 色多多免费视频观看区一区| 中文成人久久久久影院免费观看| 国产精品视频免费观看| 久九九精品免费视频| 无码欧精品亚洲日韩一区夜夜嗨| 亚洲av麻豆aⅴ无码电影| 亚洲第一精品福利| 精品亚洲视频在线| 久久精品乱子伦免费| 免费无码一区二区三区蜜桃大| 久久久久久A亚洲欧洲AV冫| 亚洲日韩激情无码一区| 亚洲精品二三区伊人久久| 一级一看免费完整版毛片| 波霸在线精品视频免费观看| 免费无码又爽又刺激网站| 99久久人妻精品免费一区| 四虎在线播放免费永久视频 | 好猛好深好爽好硬免费视频| 日韩一区二区a片免费观看| 自拍偷自拍亚洲精品被多人伦好爽|