J2EE 邮件发送那些事儿

时间:2022-05-02 07:49:23

距离自己写的关于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,所以比较大,我也没有换一张稍微小一点的。所以。。。。仅作测试用!

    J2EE 邮件发送那些事儿

    到这里,一个简单的邮件发送模块就算完成了。我相信有了这个模块,在自己的应用程序中都会显得高大上!而且,我也相信,基本上在软件行业的公司,邮件发送的开发绝对是必不可少的一个小模块!希望有这一个小巧而且简单的案例能起到抛砖引玉的作用,为正在研究邮件发送开发的朋友们提供一个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. &period;NET开发邮件发送功能的全面教程&lpar;含邮件组件源码&rpar;

    今天,给大家分享的是如何在.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. &lbrack;UWP&rsqb;UWP中获取联系人&sol;邮件发送&sol;SMS消息发送操作

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

  6. java spring 邮件发送

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

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

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

  8. c&num;实现邮件发送链接激活

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

  9. &period;Net&lpar;C&num;&rpar;最简单的邮件发送案例

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

随机推荐

  1. FastDFS 通过文件名获取文件信息

    /** * 获取文件信息 * * param string group_name 文件所在的组名 * param string file_id 文件id(如: M00/09/BE/rBBZolgj6O ...

  2. 【Git】笔记3

    来源:廖雪峰 远程仓库 远程仓库采用github 准备工作:创建远程仓库 1.创建一个github账号 2.在本地设置ssh,获取/home/user/.ssh/id_rsa.pub内容 3.在git ...

  3. 在Ubuntu下设置环境变量

    在Ubuntu中有如下几个文件可以设置环境变量 /etc/profile:在登录时,操作系统定制用户环境时使用的第一个文件,此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. /e ...

  4. 无组件客户端js图片压缩

    <div class="free-upload"> <p>上传您的约会照片,一张合影.一张票据哦!</p> <div class=&quo ...

  5. bug 修复&colon;上传库存时前端回发file&lowbar;name参数丢失&semi;

    # tmp_file = os.path.join(os.path.abspath('youcart/tmp'), json.loads(request.data).get('file_name')) ...

  6. koa2教程&lpar;一&rpar;-快速开始

    来自Koa官网对于Koa的简介: koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架. 使用 koa 编写 web 应用,通过组合不同的 async ...

  7. 软件理论基础—— 第一章命题逻辑系统L

    逻辑 语法 语义 推理系统 公理 推理规则 MP A,A->B =>B HS A->B,B->C => A->C 命题逻辑公式 ::=     BNF backus ...

  8. 输入一个正整数n,计算出&lbrack;0&comma;n&rsqb;这些整数中的二进制数没有连续3个1的数字有多少

    输入一个正整数n,计算出[0,n]这些整数中的二进制数没有连续3个1的数字有多少? 例子:输入数字9,则输出结果位9.因为[0-9]中,只有数字7有连续的三个‘1’出现,别的都没有,所以一共有9个数字 ...

  9. BZOJ2219 数论之神 数论 中国剩余定理 原根 BSGS

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2219.html 题目传送门 - BZOJ2219 题意 求同余方程 $x^A\equiv B \pmo ...

  10. Codeforces Beta Round &num;18 &lpar;Div&period; 2 Only&rpar;

    Codeforces Beta Round #18 (Div. 2 Only) http://codeforces.com/contest/18 A 暴力 #include<bits/stdc+ ...