距离自己写的关于java邮件发送的第一篇博客已经有很长一段时间了,现在回过头看看。虽然代码质量方面有待提高,整体结构也不怎样,但是基本思路和过程还是比较纯的。现在有空写写J2EE中邮件发送的开发,实际上,在开发java web应用程序时,很多时候都需要邮件发送;比如说在用户注册,激活帐号,用户修改密码等,以及在应用中进行一些比较敏感的操作时,像这类的情况都是需要发送邮件确认的。然而,如何有效地开发出一个可以直接调用的模块?如何轻松的实现这么一个功能?如何科学地提高自己应用程序的档次?这个邮件发送通通可以有。

会用电脑的基本都知道,那些发送邮件的功能是在程序中加入的。应用用户在进行某项操作时,应用就直接发送模板邮件到指定用户的邮箱。

对于邮件发送的基本原理和一些简单的邮件发送知识可以参看我的第一篇博客《Java mail基础案例开发》 ,今天这篇博客不再介绍邮件发送的基本原理,而是直接应用已有的开源工具包,在自己的应用程序中加入邮件发送功能,开发出仅仅属于自己的邮件发送模块。

          作者:itRed         邮箱:it_red@sina.com        博客链接:http://itred.cnblogs.com

本文是itRed发表于博客园,转载请标明原文出处。本博文是自己学习总结所得,欢迎大神指教。

利用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。没有什么特殊需要注意的地方。因为当你的应用程序中需要添加这一模块时,直接调用这个发送方法即可,很方便。

    ----------------------------------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
***版权声明:
本文版权归作者和博客园共有,欢迎转载,但请在文章显眼位置标明文章出处。未经本人书面同意,将其作为他用,本人保留追究责任的所有权利。

J2EE 邮件发送那些事儿的更多相关文章

  1. JavaWeb 之邮件发送

    1. 邮件协议概述 SMTP(Simple Mail Transfer Protocol, 简单邮件传输协议) 发邮件协议; POP3(Post Office Protocol Version 3, ...

  2. .NET开发邮件发送功能的全面教程(含邮件组件源码)

    今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1)         邮件基础理论知识 2)         ...

  3. 结合ABP源码实现邮件发送功能

    1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...

  4. SSH项目里面 忘记密码的邮件发送功能

    package com.xxx.util; import java.util.Date; import java.util.Properties; import javax.mail.Address; ...

  5. [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作

    这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...

  6. java spring 邮件发送

    开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...

  7. Java邮件发送与接收原理

    一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...

  8. c#实现邮件发送链接激活

    2016-08-24 10:09:52 public void MailSend(string email) { MailMessage MyMail = new MailMessage(); MyM ...

  9. .Net(C#)最简单的邮件发送案例

    一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字 ...

随机推荐

  1. 【.net 深呼吸】细说CodeDom(6):方法参数

    本文老周就给大伙伴们介绍一下方法参数代码的生成. 在开始之前,先补充一下上一篇烂文的内容.在上一篇文章中,老周检讨了 MemberAttributes 枚举的用法,老周此前误以为该枚举不能进行按位操作 ...

  2. CENTOS 6.5 平台离线编译安装 Mysql5.6.22

    一.下载源码包 http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.22.tar.gz 二.准备工作 卸载之前本机自带的MYSQL 安装 cmake,编 ...

  3. Android数据加密之MD5加密

    前言: 项目中无论是密码的存储或者说判断文件是否是同一文件,都会用到MD5算法,今天来总结一下MD5加密算法. 什么是MD5加密? MD5英文全称“Message-Digest Algorithm 5 ...

  4. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  5. potrace源码分析一

    1 简介 potrace是由Dalhousie University的Peter Selinger开发一款位图轮廓矢量化软件,该软件源码是可以公开下载的,详细见项目主页:http://potrace. ...

  6. 前端HTML5几种存储方式的总结

    接下来要好好总结一些知识,秋招来啦...虽然有好多知识都不大会,但是还是要努力一下,运气这种东西,谁知道呢~ 总体情况 h5之前,存储主要是用cookies.cookies缺点有在请求头上带着数据,大 ...

  7. input标签中button在iPhone中圆角的问题

    1.问题 使用H5编写微信页面时,使用<input type="button"/>时,在Android手机中显示正常,但是在iPhone手机中则显示不正常,显示为圆角样 ...

  8. 手把手教你写一个RN小程序!

    时间过得真快,眨眼已经快3年了! 1.我的第一个App 还记得我14年初写的第一个iOS小程序,当时是给别人写的一个单机的相册,也是我开发的第一个完整的app,虽然功能挺少,但是耐不住心中的激动啊,现 ...

  9. the Zen of Python---转载版

    摘自译文学习区 http://article.yeeyan.org/view/legendsland/154430 The Zen of Python Python 之禅 Beautiful is b ...

  10. 说一说python的牛比与不爽

    本人写了10年php了.今年开始改写python了.不是说php有什么不好,php在自己的势力范围内还是很牛比的.只是我已经不能满足于php那两亩地了. 习惯了脚本,所以很自然就过度到python了. ...