距离自己写的关于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. Solr_全文检索引擎系统

    Solr介绍: Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务.Solr可以独立运行在Jetty.Tomcat等这些Servlet容器中. Solr ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. 移动端1px边框

    问题:移动端1px边框,看起来总是2倍的边框大小,为了解决这个问题试用过很多方法,用图片,用js判断dpr等,都不太满意, 最后找到一个还算好用的方法:伪类 + transform 原理是把原先元素的 ...

  4. 个人网站对xss跨站脚本攻击(重点是富文本编辑器情况)和sql注入攻击的防范

    昨天本博客受到了xss跨站脚本注入攻击,3分钟攻陷--其实攻击者进攻的手法很简单,没啥技术含量.只能感叹自己之前竟然完全没防范. 这是数据库里留下的一些记录.最后那人弄了一个无限循环弹出框的脚本,估计 ...

  5. java常用的设计模式

    设计模式:一个程序员对设计模式的理解:"不懂"为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的"复杂"恰恰就是设计模式的精髓所 ...

  6. Redis配置文件redis.conf

    1.地址 2.Units单位 1 配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 2 对大小写不敏感 3.includes包含

  7. echo命令

    linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的 ...

  8. OAuth2 理解

    OAth2 是为了某个应用向第三方应用开放服务时,控制权限的. 因为不可以直接将账户体系开放出去,要求重新登录. 其实本质是让用户在客户端来判断是否要给该应用开放平台的权限,如果用户同意,那么可以拿到 ...

  9. Web应用多账号系统设计及微信扫码登录实现

    Web应用多账号系统设计及微信扫码登录实现 1   前言概述 公司对功能测试,性能测试,安全测试等等都做了比较好的自动化后,急需要一个MIS系统来统一管理这些结果及报表. 此MIS系统特点如下: 仅内 ...

  10. Jquery双向select控件Bootstrap Dual Listbox

    效果预览: 一. 下载插件 github地址:https://github.com/istvan-ujjmeszaros/bootstrap-duallistbox 也可以在这个网站中下载:http: ...