J2EE 郵件發送那些事兒

     距離本身寫的關於java郵件發送的第一篇博客已經有很長一段時間了,如今回過頭看看。雖然代碼質量方面有待提升,總體結構也不怎樣,可是基本思路和過程仍是比較純的。如今有空寫寫J2EE中郵件發送的開發,實際上,在開發java web應用程序時,不少時候都須要郵件發送;好比說在用戶註冊,激活賬號,用戶修改密碼等,以及在應用中進行一些比較敏感的操做時,像這類的狀況都是須要發送郵件確認的。然而,如何有效地開發出一個能夠直接調用的模塊?如何輕鬆的實現這麼一個功能?如何科學地提升本身應用程序的檔次?這個郵件發送統統能夠有。html

      會用電腦的基本都知道,那些發送郵件的功能是在程序中加入的。應用用戶在進行某項操做時,應用就直接發送模板郵件到指定用戶的郵箱。java

      對於郵件發送的基本原理和一些簡單的郵件發送知識能夠參看個人第一篇博客《Java mail基礎案例開發》 ,今天這篇博客再也不介紹郵件發送的基本原理,而是直接應用已有的開源工具包,在本身的應用程序中加入郵件發送功能,開發出僅僅屬於本身的郵件發送模塊。web

          做者:itRed         郵箱:it_red@sina.com        博客連接:http://itred.cnblogs.com

 

         本文是itRed發表於博客園,轉載請標明原文出處。本博文是本身學習總結所得,歡迎大神指教。apache

      利用apache的開源郵件發送彷佛是很簡單的,可是,我想把這個功能做爲一個小型模塊來直接用,並非僅僅寫一個測試類就行。當存在了apache的開源框架包,直接寫一個郵件發送類是很容易的。網上這樣的教程也不少。所以,我想要更加完美一點的郵件發送模塊。在應用中的其餘模塊中調用起來也比較方便。好了,廢話很少說。直接將本身的開發過程貼出,與諸位初學者共享。利用Apache郵件組件開發須要的jar包有commons-email-X.X.jar、mail.jar。網上有朋友說還須要一個叫作activition的jar包,我的認爲不是很須要。在本案例的開發中沒有用到activition的jar包。所用到的郵件組件的版本爲:commons-email-1.2.jar 和 mail.jar 。本文提供下載連接:點擊便可下載。服務器

      好了,下載完兩個jar包後,新建一個項目工程,能夠是web,也能夠是java。沒有什麼特殊須要注意的地方。由於當你的應用程序中須要添加這一模塊時,直接調用這個發送方法便可,很方便。app

     ----------------------------------demo----------------------------------------------------框架

  1. 直接建一個java工程,導入jar包;build path;(若是你建的時web項目就不須要進行build path了,由於web項目會自動build path);
  2. 新建實體bean對象:

    郵件實體:工具

    private String logo;// logo ,附圖片
    private String phone;// 郵箱中附聯繫電話
    private String address;// 郵箱中附聯繫地址
    private String server;// 郵箱服務器
    private String port;// 郵件服務器端口
    private String email;// 發送郵箱
    private String passwd;// 發送郵箱密碼

    public MailBean() {

    }

    public MailBean(String server, String port, String email, String passwd,
            String msg) {
        this.server = server;
        this.port = port;
        this.email = email;
        this.passwd = passwd;
    }

    public MailBean(String logo, String phone, String address, String server,
            String port, String email, String passwd) {
        this.logo = logo;
        this.phone = phone;
        this.address = address;
        this.server = server;
        this.port = port;
        this.email = email;
        this.passwd = passwd;
    }
    //....其中各get和set方法已經省略。

 

    郵件內容實體bean:學習

    private String title; // 郵件主題
private String message;// 郵件內容 private String file;// 附件 public MailContent() { this.title = "test"; this.message = "test"; } public MailContent(String title, String message) { this.title = title; this.message = message; } //......其中各get和set方法已經省略。

 

  3. 新建郵件內容模板接口,並實現這個接口類:測試

public interface MailModel {

    /**
     * 設置郵件樣式
     * @param mail 發送端設置信息
     * @param content 發送內容
     * @return 生成的郵件樣式
     */
    public String format(MailBean mail, MailContent content);

}

    實現類:

package com.red.mail.model;

import com.red.mail.MailBean;
import com.red.mail.MailContent;

/**
 * 郵件默認樣式
 * 
 * @author Red
 * @version 1.0
 */
public class DefaultModel implements MailModel {

    /**
     * 設置郵件默認樣式
     * @param bean 發送端設置信息
     * @param content 發送內容
     * @return 生成的郵件樣式
     */
    public String format(MailBean bean, MailContent content) {
        String htmlmsg = "<style class='fox_global_style'>div.fox_html_content { line-height: 1.5; }div.fox_html_content { font-size: 10.5pt; font-family: 宋體; color: rgb(0, 0, 0); line-height: 1.5; }</style><div style='MARGIN: 10px; FONT-FAMILY: verdana; FONT-SIZE: 10pt'>"
                + content.getTitle()
                + "<br><br><hr/><img src='"
                + bean.getLogo()
                + "'></div><div style='margin: 10px; font-size: 13px;'><font face='Arial'>"
                + content.getMessage()
                + " &nbsp;</font></div><div style='margin: 10px; font-size: 13px;'><span style='background-color: rgba(0, 0, 0, 0); font-family: Arial; line-height: 1.5;'>24小時聯繫電話:"
                + bean.getPhone()
                + "</span></div><div style='margin: 10px; font-size: 13px;'><span style='font-family: 宋體, Tahoma; font-size: small; line-height: normal;'>"
                + bean.getAddress() + "</span></div>";
        return htmlmsg;
    }

}

    郵件發送操做類:(測試)

  public static void main(String[] args) {
        try {
            //定義一些郵件參數
            final MailBean mailBean = new MailBean("http://www.baidu.com/img/bd_logo1.png", "13671****29", "四川省成都市", "smtp.sina.com.cn", "25", "it_red@sina.com", "密碼");
            MailContent mailContent = new MailContent("測試郵件的主題", "測試");
            File filepath = new File("test.txt附件");
            if (!filepath.exists()) {
                filepath.createNewFile();
            }
            mailContent.addFile(filepath.getAbsolutePath());
            String[] receives = {"收件人的郵箱地址 "};
            String[] carbons = {"郵件抄送到某人的郵箱地址 "};
            //發送代碼時,只要有參數就只須要調用如下幾行代碼就能夠了
            MailCenter center = new MailCenter(mailBean, receives, carbons);
            center.setMailModel(new DefaultModel());
            center.send(mailContent);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (EmailException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

  如今能夠查看郵箱了,其中的郵件內容截圖以下:(由於我用的圖片是百度的logo,因此比較大,我也沒有換一張稍微小一點的。因此。。。。僅做測試用!

    

    到這裏,一個簡單的郵件發送模塊就算完成了。我相信有了這個模塊,在本身的應用程序中都會顯得高大上!並且,我也相信,基本上在軟件行業的公司,郵件發送的開發絕對是必不可少的一個小模塊!但願有這一個小巧並且簡單的案例能起到拋磚引玉的做用,爲正在研究郵件發送開發的朋友們提供一個demo,用來提升本身的程序水平;同時,也但願獲得大神朋友的指教。共同進步!

做者:itRed 郵箱:it_red@sina.com  博客:http://www.cnblogs.com/itred  我的網站:http://wangxingyu.jd-app.com ***版權聲明:本文版權歸做者和博客園共有,歡迎轉載,但請在文章顯眼位置標明文章出處。未經本人書面贊成,將其做爲他用,本人保留追究責任的全部權利。
相關文章
相關標籤/搜索