第1章 概述

在使用报表产品时,有时会有这样的需求:将每一报表导出后通过邮件发送给相关人员。UniEAP Report自带了一个用来发送邮件的API,本文就来介绍它的具体用法。

第2章 实现步骤

2.1 邮件服务配置

首先要提供用于发送邮件的通用配置,包括邮件服务器、发件人、用户名、密码等。这此信息需要在\WEB-INF\conf\unieap\report\mail.properties中配置好。

文件参数说明如下:

参数名 说明
host 邮件服务器
from 邮箱名
userName 用户名
password 密码
senderShowName 邮件显示发件人名称
useDefault 是否使用默认配置:
true:不需要配置用户名、密码(对于不需要指定用户名、密码的邮件服务器,此项配置为true);
false:需要配置用户名、密码;
security 连接安全设置:
None:无安全配置
SSL/TLS:使用SSL/TLS安全
STARTTLS:使用STARTTLS安全
port 发送邮件服务器端口
protocols SSL协议名称,如果存在多个协议,中间使用空格间隔如:SSLv3 TLSv1
isDebug 是否使用调试模式(该配置用于二次开发中问题的诊断,通常情况下无需配置):
True:使用调试模式
False:关闭调试模式
如果使用调试模式,则控制台可以查看发送邮件的详细信息。

如果邮件服务器为SSL加密传输,则需要配置数字签名证书,证书的配置方法如下:

将服务器提供的数字签名证书SomeCA.cer复制到%JAVA_HOME%\jre\lib\security目录下。使用命令行进入目录:cd %JAVA_HOME%\jre\lib\security,执行如下命令:

keytool -import -alias cacerts -keystore .\cacerts -file SomeCA.cer –trustcacerts

提示输入密码,SUN_JDK默认的密码为changeit;会弹出提示,‘是否信任这个认证?’确认后,即可使用SSL密文邮件服务器发送邮件。

2.2 发送邮件选项

在发送邮件时,需要设置收件人、邮件主题、正文、附件类型等信息,此时要用到com.neusoft.report.server.api.MailOptions类,定义如下,已列出所有可设置项:

public class MailOptions {

    // 附件类型常量
    public static String ATTACHMENT_TYPE_XLS = "XLS";
    public static String ATTACHMENT_TYPE_PDF = "PDF";
    public static String ATTACHMENT_TYPE_DOC = "DOC";

    // 收件人
    private String[] to;
    // 抄送
    private String[] cc;
    // 暗送
    private String[] bcc;
    // 邮件主题
    private String subject;
    // 邮件正文
    private String content;
    // 是否带附件
    private boolean hasAttachment;
    // 附件类型,可以是XLS/PDF/DOC三者之一
        private String attachmentType;

        // setters and getters
        …

2.3 调用发送邮件API

调用com.neusoft.report.server.api.MailUtil类的两个sendReportMail方法之一发送邮件,方法签名如下:

public static void sendReportMail(String reportId, MailOptions mailOptions) throws UnsupportedEncodingException, MessagingException;
public static void sendReportMail(String reportId, Map reportParams,Map reportContext, MailOptions mailOptions) throws MessagingException, UnsupportedEncodingException;

参数说明:
reportParams,包含所有报表参数的名值对。
reportContext,生成报表时使用的上下文对象。
reportId,要发送的报表的id。
mailOptions,邮件选项对象。

两个方法的区别在于,当报表无参数且不需要设置上下文时,可以直接调用参数较少的方法,此时会将reportParams和reportContext设为空Map并调用第二个方法。

下面给出一个发送邮件的简单示例:

String reportId = "dbcc7350-a3a5-4c9d-9dc0-4dc0e029b786";
MailOptions options = new MailOptions();
options.setTo(new String[] { "zhan.j@neusoft.com" });
options.setBcc(new String[] { "fuyw@neusoft.com" });
options.setSubject("test");
options.setHasAttachment(true);
options.setAttachmentType(MailOptions.ATTACHMENT_TYPE_XLS);
    MailUtil.sendReportMail(reportId, options);

第3章 约束条件

使用发送邮件API存在以下约束条件:

(1) 报表引擎必须已经启动,并且初始化成功。

(2) 暂不支持通过邮件发送分段报表。

(3) 报表正文和邮件正文只能选择一个,即如果使用报表作为正文,正文中不允许再有其他内容。如果还需要发送其他内容,则只能将报表作为附件。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""