软件开发过程中,经常使用JavaMail给用户发送邮件;大多说情况下使用的是自定义的模板;定义模板的时候,经常使用这样的形式:${parameter}预留信息,然后使用以parameter为key的map,在map中存放的是具体应该放在${parameter}位置的信息,让后生产发给用户的邮件内容; 下面是鄙人在开发过程中使用的测试用例,记录下来以备后用,也希望能够帮助开发过程中遇到发送邮件,使用模板的童鞋少走点弯路,贴在下面,以飨童鞋;
public class TestEmail { public static void main(String[] args) { // 邮件模板 StringBuffer htmlText = new StringBuffer( "感谢您注册万维网的账户,ID是${id},昵称是${usrName},你的密码是${ password },这封邮件是系统自动发出的,不需要回复,如果有疑问,
[email protected]谢谢;"); // 带有参数值的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; } }