软件开发过程中,经常使用JavaMail给用户发送邮件;大多说情况下使用的是自定义的模板;定义模板的时候,经常使用这样的形式:${parameter}预留信息,然后使用以parameter为key的map,在map中存放的是具体应该放在${parameter}位置的信息,让后生产发给用户的邮件内容; 下面是鄙人在开发过程中使用的测试用例,记录下来以备后用,也希望能够帮助开发过程中遇到发送邮件,使用模板的童鞋少走点弯路,贴在下面,以飨童鞋;
public class TestEmail { public static void main(String[] args) { // 邮件模板 StringBuffer htmlText = new StringBuffer( "感谢您注册万维网的账户,ID是${id},昵称是${usrName},你的密码是${ password },这封邮件是系统自动发出的,不需要回复,如果有疑问,wang_walden@163.com谢谢;"); // 带有参数值的Map Map parameterMap = new HashMap(); parameterMap.put("id", "357568"); parameterMap.put("usrName", "walden.wang"); parameterMap.put("password", "12345678"); StringBuffer result = producesEmail(htmlText, parameterMap); System.out.println(result); } /** * 取出htmlText文本中${parameter}的parameter作为key将parameterMap中对应的value * 放在HTML模板中,返回邮件内容 * * @param htmlText * 邮件模板 * @param parameterMap * 参数映射表 * @return */ private static StringBuffer producesEmail(StringBuffer htmlText, Map parameterMap) { // parameter前后空格已经去掉,对应的map中key前后应该不应该有空格了 Pattern pt = Pattern.compile("\\$\\{\\s*([^\\}\\s]+)\\s*\\}"); Matcher mt = pt.matcher(htmlText); StringBuffer result = new StringBuffer(); while (mt.find()) mt.appendReplacement(result, parameterMap.get(mt.group(1))); mt.appendTail(result); return result; } }
发表评论
-
GDI中获取字符串精确绘制范围的两种做法比较
2012-07-06 09:52 658作者:朱金灿 ... -
正则表达式 cscope emacs svn putty emacs
2012-07-06 09:38 771我一懒人,图自己方便。要是路过的朋友们用上了的话,请给懒人 ... -
C# winform 启动画面支持多种 framework
2012-07-06 09:30 902using System; using System.Co ... -
18位身份证验证代码
2012-07-05 20:45 803首先php版本的: /** * 身份证 * * @para ... -
在Flex组件上显示手型的鼠标
2012-07-03 13:44 669在Flex组件上显示手型的鼠标 有些时候,我们需要 ... -
Flex学习笔记
2012-07-02 12:46 562类成员有四种修饰 ... -
关于Firefox重新加载flex的问题解决
2012-07-02 12:46 834DIV中有一个flex,我希望用js来控制它的显示和隐藏, ... -
flex取数据1
2012-07-02 12:45 533HTML通过JavaScript传递信息到Flex中 ... -
Pivot升级为Apache顶级项目,准备好挑战Flex, Silverlight和JavaFX
2012-07-02 12:45 615Apache软件基金会(ASF)于昨天宣布,将Pivot ... -
Flex控制对主机网页中脚本的访问
2012-07-02 12:45 517通过使用以下 ActionScript 3.0 API 可 ... -
视频聊天网站的研究、发展以及趋势(转)
2012-07-01 10:07 518此文讲述了视频聊 ... -
Ubuntu 10.04环境下载&编译Android-2.2.1 (froyo )
2012-07-01 10:07 1018本文根据下文整理而成: http://mantocom.b ... -
转载:WebKit介绍及总结(三)
2012-07-01 10:07 675六 . 编译与调试 在 ubuntu-10.04 上 ... -
ExtJS 4 Grid组件
2012-07-01 10:07 614我们正 ... -
[转载]flex开源框架汇总-leo_wlcnblogs-博客园
2012-06-30 16:34 689[转载]flex开源框架汇总-leo_wlcnblogs-博客 ... -
【FLEX学习】第五天
2012-06-30 16:34 574【FLEX学习】第五天 2011年02月17日 1.细化 ... -
使用Flex和Actionscript开发Flash游戏―(八)
2012-06-30 16:34 499使用Flex和Actionscript开发Flash游戏―(八 ... -
使用Flex3.0 AIR 创建“不规则形状”的Air透明窗体
2012-06-30 16:34 562使用Flex3.0 AIR 创建“不规则形状”的Air透明窗体 ... -
ria big bang = {flash/air/flex .vs. html5}_chriswang
2012-06-30 16:34 607ria big bang = {flash/air/flex ...
相关推荐
正则表达式测试器(可设置、保存常用正则表达式) 获取键盘的按键值 网页隐藏资源下载,可下载无法直接得到URL的SWF、图片、音乐等资源 获取汉字的拼音、五笔编码、笔画数、笔顺名、部首等信息,并可进行汉字繁/...
正则表达式测试器(可设置、保存常用正则表达式) 获取键盘的按键值 网页隐藏资源下载,可下载无法直接得到URL的SWF、图片、音乐等资源 获取汉字的拼音、五笔编码、笔画数、笔顺名、部首等信息,并可进行汉字繁/简体...
正则表达式(教学录像:28分34秒) 6.1什么是正则表达式 6.2正则表达式语法规则 6.3POSIX扩展正则表达式函数 6.4PCRE兼容正则表达式函数 PHP数组(教学录像:56分29秒) 7.1了解数组 7.2声明数组 7.3数组的类型 7.4...
正则表达式(教学录像:28分34秒) 6.1什么是正则表达式 6.2正则表达式语法规则 6.3POSIX扩展正则表达式函数 6.4PCRE兼容正则表达式函数 PHP数组(教学录像:56分29秒) 7.1了解数组 7.2声明数组 7.3数组的类型 7.4...
正则表达式测试器(可设置、保存常用正则表达式) 获取键盘的按键值 网页隐藏资源下载,可下载无法直接得到URL的SWF、图片、音乐等资源 获取汉字的拼音、五笔编码、笔画数、笔顺名、部首等信息,并可进行汉字繁/...
正则表达式测试器(可设置、保存常用正则表达式) 获取键盘的按键值 网页隐藏资源下载,可下载无法直接得到URL的SWF、图片、音乐等资源 获取汉字的拼音、五笔编码、笔画数、笔顺名、部首等信息,并可进行汉字繁/...
正则表达式测试器(可设置、保存常用正则表达式) 获取键盘的按键值 网页隐藏资源下载,可下载无法直接得到URL的SWF、图片、音乐等资源 获取汉字的拼音、五笔编码、笔画数、笔顺名、部首等信息,并可进行汉字繁/...
55. 正则表达式应用模板 125 56. Wscript.shell 的应用 126 57. Create log file 126 58. 对象同步 127 59. 异常控制 127 60. Check if the object.exist 128 61. QTP场景恢复 129 62. QTP步骤生成器 135 63. IFRAME...
55. 正则表达式应用模板 125 56. Wscript.shell 的应用 126 57. Create log file 126 58. 对象同步 127 59. 异常控制 127 60. Check if the object.exist 128 61. QTP场景恢复 129 62. QTP步骤生成器 135 63. IFRAME...
正则表达式 常用内建模块 datetime collections base64 struct hashlib hmac itertools contextlib urllib XML HTMLParser 常用第三方模块 Pillow requests chardet psutil virtualenv 图形界面 网络编程 TCP/IP简介...
17.5 在Apache的.htaccess文件中使用基本身份验证 17.6 使用mod_auth_mysql身份验证 17.6.1 安装mod_auth_mysql 17.6.2 使用mod_auth_mysql 17.7 创建自定义身份验证 17.8 进一步学习 17.9 下一章 第18章 ...
17.5 在Apache的.htaccess文件中使用基本身份验证 17.6 使用mod_auth_mysql身份验证 17.6.1 安装mod_auth_mysql 17.6.2 使用mod_auth_mysql 17.7 创建自定义身份验证 17.8 进一步学习 17.9 下一章 第18章 ...
17.5 在Apache的.htaccess文件中使用基本身份验证 17.6 使用mod_auth_mysql身份验证 17.6.1 安装mod_auth_mysql 17.6.2 使用mod_auth_mysql 17.7 创建自定义身份验证 17.8 进一步学习 17.9 下一章 第18章 使用PHP和...
正则表达式 298 常用内建模块 304 datetime 305 collections 312 base64 317 struct 320 hashlib 322 itertools 327 contextlib 331 XML 336 HTMLParser 341 urllib 344 常用第三方模块 349 virtualenv...
使用ADO.NET <br>第9章 ADO.NET简介 <br>9.1 ADO.NET概述 9.2 执行常见的数据库任务 9.2.1 打开数据库链接 9.2.2 从数据库表获取记录 9.2.3 在查询中使用参数 9.2.4 向数据库添加记录 ...
使用ADO.NET <br>第9章 ADO.NET简介 <br>9.1 ADO.NET概述 9.2 执行常见的数据库任务 9.2.1 打开数据库链接 9.2.2 从数据库表获取记录 9.2.3 在查询中使用参数 9.2.4 向数据库添加记录 ...
使用ADO.NET <br>第9章 ADO.NET简介 <br>9.1 ADO.NET概述 9.2 执行常见的数据库任务 9.2.1 打开数据库链接 9.2.2 从数据库表获取记录 9.2.3 在查询中使用参数 9.2.4 向数据库添加记录 ...
使用ADO.NET <br>第9章 ADO.NET简介 <br>9.1 ADO.NET概述 9.2 执行常见的数据库任务 9.2.1 打开数据库链接 9.2.2 从数据库表获取记录 9.2.3 在查询中使用参数 9.2.4 向数据库添加记录 ...
使用ADO.NET <br>第9章 ADO.NET简介 <br>9.1 ADO.NET概述 9.2 执行常见的数据库任务 9.2.1 打开数据库链接 9.2.2 从数据库表获取记录 9.2.3 在查询中使用参数 9.2.4 向数据库添加记录 ...