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 ***版权声明:本文版权归做者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面赞成,将其做为他用,本人保留追究责任的全部权利。
相关文章
相关标签/搜索