J2EE 邮件发送那些事儿
距离自己写的关于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----------------------------------------------------
- 直接建一个java工程,导入jar包;build path;(如果你建的时web项目就不需要进行build path了,因为web项目会自动build path);
- 新建实体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()
+ " </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 邮件发送那些事儿的更多相关文章
- JavaWeb 之邮件发送
1. 邮件协议概述 SMTP(Simple Mail Transfer Protocol, 简单邮件传输协议) 发邮件协议; POP3(Post Office Protocol Version 3, ...
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- 结合ABP源码实现邮件发送功能
1. 前言 2. 实现过程 1. 代码图(重) 2.具体实现 2.1 定义AppSettingNames及AppSettingProvider 2.2 EmailSenderConfiguration ...
- SSH项目里面 忘记密码的邮件发送功能
package com.xxx.util; import java.util.Date; import java.util.Properties; import javax.mail.Address; ...
- [UWP]UWP中获取联系人/邮件发送/SMS消息发送操作
这篇博客将介绍如何在UWP程序中获取联系人/邮件发送/SMS发送的基础操作. 1. 获取联系人 UWP中联系人获取需要引入Windows.ApplicationModel.Contacts名称空间. ...
- java spring 邮件发送
开发中经常会遇到发送邮件进行用户验证,或者其它推送信息的情况,本文基于spring,完成邮件的发送,主要支持普通文本邮件的发送,html文本邮件的发送,带附件的邮件发送,没有实现群发.多个附件发送等需 ...
- Java邮件发送与接收原理
一. 邮件开发涉及到的一些基本概念 1.1.邮件服务器和电子邮箱 要在Internet上提供电子邮件功能,必须有专门的电子邮件服务器.例如现在Internet很多提供邮件服务的厂商:sina.sohu ...
- c#实现邮件发送链接激活
2016-08-24 10:09:52 public void MailSend(string email) { MailMessage MyMail = new MailMessage(); MyM ...
- .Net(C#)最简单的邮件发送案例
一.序言 刚开始接触邮件发送功能的时候,在网上找的资料都挺复杂的!对于新手入门有点难(至少对于本人来说,第一次接触的时候确实不容易).这里就写一段简单的邮箱发送代码,备忘,也给新手一个参考(相关类的字 ...
随机推荐
- UWP中新加的数据绑定方式x:Bind分析总结
UWP中新加的数据绑定方式x:Bind分析总结 0x00 UWP中的x:Bind 由之前有过WPF开发经验,所以在学习UWP的时候直接省略了XAML.数据绑定等几个看着十分眼熟的主题.学习过程中倒是也 ...
- HTML5 sessionStorage会话存储
sessionStorage 是HTML5新增的一个会话存储对象,用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据.本篇主要介绍 sessionStorage(会话存储) ...
- QT5利用chromium内核与HTML页面交互
在QT5.4之前,做QT开发浏览器只能选择QWebkit,但是有过使用的都会发现,这个webkit不是出奇的慢,简直是慢的令人发指,Release模式下还行,debug下你就无语了,但是webkit毕 ...
- Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
- JQuery中的siblings()是什么意思
jQuery siblings() 方法返回被选元素的所有同胞元素,并且可以使用可选参数来过滤对同胞元素的搜索. 实例演示:点击某个li标签后将其设置为红色,而其所有同胞元素去除红色样式. 1.创建H ...
- 基于Vue2.0的单页面开发方案
2016的最后一天,多多少少都应该总结一下这一年的得失,哪里做的好,哪里需要改进,记一笔,或许将来会用到呢. 毕业差不多半年了,一直是一个人在负责公司项目的前端开发与维护,当时公司希望前后端分离,提高 ...
- arcgis api for js入门开发系列八聚合效果(含源代码)
上一篇实现了demo的图层控制模块,本篇新增聚合效果,截图如下(源代码见文章底部): 聚合效果实现的思路如下: 1.map.html引用聚合包,项目已经包含进来了的聚合文件夹: <script ...
- 【干货分享】流程DEMO-出差申请单
流程名: 出差申请 业务描述: 员工出差前发起流程申请,流程发起时,会检查预算,如果预算不够,将不允许发起费用申请,如果预算够用,将发起流程,同时占用相应金额的预算,但撤销流程会释放相应金额的预算. ...
- sqlserver批量修改首字母为大写
'hello world' ----> 'Hello world' update tableName set columnName=CHAR(ASCII(SUBSTRING(columnN ...
- centos下开启ftp服务
如果要ftp访问linux需要安装ftp服务,vsftpd是Linux下比较好的的FTP服务器. 一.检查安装vsftp //检查是否安装vsftpd rpm -qa | grep vsftpd // ...