现在的位置: 首页 > 综合 > 正文

Liferay:邮件送信接口

2013年10月07日 ⁄ 综合 ⁄ 共 2803字 ⁄ 字号 评论关闭

   Liferay中的邮件送信非常简单,调用 MailServiceUtil.sendEmail(mailMessage);即可。

是单独的一个job,所以是非同期送信。

下面是我写的一个送信方法。to,cc,bcc都可以是用逗号分隔的多个邮件地址。

private void sendMail(String toAddress, String ccAddress, String bccAddress, String mailTempFileName, Map<String, String> replaceMap) throws AddressException, IOException  {

        InternetAddress[] toAddressArr = null;
        if (toAddress != null) {
            String[] mailAddressArr = toAddress.split(",");
            toAddressArr = new InternetAddress[mailAddressArr.length];
            for (int i = 0; i < mailAddressArr.length; i++) {
                toAddressArr[i] = new InternetAddress(mailAddressArr[i]);
            }
        }
        
        InternetAddress[] ccAddressArr = null;
        if (ccAddress != null) {
            String[] mailAddressArr = ccAddress.split(",");
            ccAddressArr = new InternetAddress[mailAddressArr.length];
            for (int i = 0; i < mailAddressArr.length; i++) {
                ccAddressArr[i] = new InternetAddress(mailAddressArr[i]);
            }
        }
        
        InternetAddress[] bccAddressArr = null;
        if (bccAddress != null) {
            String[] mailAddressArr = bccAddress.split(",");
            bccAddressArr = new InternetAddress[mailAddressArr.length];
            for (int i = 0; i < mailAddressArr.length; i++) {
                bccAddressArr[i] = new InternetAddress(mailAddressArr[i]);
            }
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(mailTempFileName)));
       
        // template,读入模板。模板的第一行作为标题,第二行以后是本文。
        StringBuffer sb = new StringBuffer();
        String str = null;
        String subject = "";
        String body = "";
        boolean isFirst = true;
        while((str = br.readLine())!= null) {

            if (isFirst) {

                subject = str;
                isFirst = false;
                continue;
            }
            sb.append(str + "\r\n");
        }
        br.close();
        body = sb.toString();
        
        //
        subject = replaceAllParameter(subject, replaceMap);
        body = replaceAllParameter(body, replaceMap);
        
        // FROM
        InternetAddress fromAddress = new InternetAddress(PropsUtil.get("bbs.mail.fromaddress"));
        MailMessage mailMessage = new MailMessage(fromAddress, subject, body, false);
        if (toAddressArr != null) {
            mailMessage.setTo(toAddressArr);
        }
        if (ccAddress != null) {
            mailMessage.setCC(ccAddressArr);
        }
        if (bccAddress != null) {
            mailMessage.setBCC(bccAddressArr);
        }
        // 送信
        MailServiceUtil.sendEmail(mailMessage);

    }

//置换文字替换方法

    private String replaceAllParameter(String replace, Map<String, String> replaceMap) {
        Iterator<String> iterator =  replaceMap.keySet().iterator();
        while (iterator.hasNext()) {
            String key = (String) iterator.next();
            if (replaceMap.get(key) != null) {
                //replace = replace.replaceAll("\\" + key, replaceMap.get(key));
                replace = StringUtils.replace(replace, key, replaceMap.get(key));
            }
        }
        return replace;
    }

【上篇】
【下篇】

抱歉!评论已关闭.