1.示例场景
通常我们可过计划任务把电子表格报表内容以邮件的正文形式发送。
2.实现思路
通过计划中的【定制】写JAVA代码实现。
效果如下:

3.操作步骤:
1、先创建好电子表格报表。
2、在【系统运维】-》【计划任务】-》【任务】创建任务,【任务类型】选择:“定制”

JAVA代码如下:
importPackage(Packages.smartbi.sdk.service.spreadsheetreport);
importPackage(Packages.smartbi.scheduletask.task);
importPackage(Packages.smartbi.sdk.service.systemconfig);
importPackage(Packages.java.lang);
importPackage(Packages.java.util);
importPackage(Packages.java.text);
importPackage(Packages.java.io);
importPackage(Packages.org.apache.commons.lang);
importPackage(Packages.org.apache.commons.mail);
importPackage(Packages.smartbi.scheduletask.component);
importPackage(Packages.smartbi.util);
var report = null;
//定义email对象,初始化参数
var multiPartEmail = new SmartbiMultiPartEmail();
var systemConfigService = new SystemConfigService(connector);
var configList = systemConfigService.getSystemConfigs();
var mailServer = null;
var fromAddress = null;
var userName = null;
var password = null;
var encryptPassword = null;
var emailSSLEnabled = null;
var emailTLSEnabled = null;
var port = "";
for (var i = 0; i < configList.size(); i++) {
var config = configList.get(i);
if (config!=null) {
if (config.getKey().equals("EMAIL_SMTP_SERVER")) {
mailServer = config.getValue();
} else if (config.getKey().equals("EMAIL_USER_NAME")) {
userName = config.getValue();
} else if (config.getKey().equals("EMAIL_USER_ADDRESS")) {
fromAddress = config.getValue();
} else if (config.getKey().equals("EMAIL_USER_PASSWORD")) {
password= config.getValue();
} else if (config.getKey().equals("EMAIL_USER_PASSWORD_ENCRYPT")) {
encryptPassword = config.getValue();
} else if (config.getKey().equals("EMAIL_SSL_ENABLED")) {
if (config.getValue().equals("true")) {
emailSSLEnabled = true;
}
} else if (config.getKey().equals("EMAIL_TLS_ENABLED")) {
if (config.getValue().equals("true")) {
emailTLSEnabled = true;
}
}else if (config.getKey().equals("EMAIL_SMTP_PORT")) { //端口
port = config.getValue().trim();
}
}
}
if (StringUtil.equals(encryptPassword, "true")) {
password = AESCryption.decrypt(password);
}
System.out.println(mailServer);
System.out.println(fromAddress);
System.out.println(password);
multiPartEmail.setHostName(mailServer);
multiPartEmail.setAuthentication(userName, password);
multiPartEmail.setFrom(fromAddress);
if(emailSSLEnabled){
multiPartEmail.setSSL(true);
if(port != ""){
multiPartEmail.setSslSmtpPort(port);
}
}
if(emailTLSEnabled){
multiPartEmail.setTLS(true);
}
if(port != "" && !emailSSLEnabled){
multiPartEmail.setSmtpPort(port);
}
multiPartEmail.addTo("zhouyan@smartbi.com.cn");//接收邮箱地址
multiPartEmail.setCharset("GBK");//邮件内容字符集
multiPartEmail.setSubject("测试邮件");//邮件标题
// var sb = new StringBuffer();
// sb.append("<html><body><p>这是一个系统自动发送的邮件,请勿回复。</p></body></html>");
// sb.append("\n");
report = new SSReport(connector);
report.open("I4028812115561f6c01449562ca190067"); //报表资源ID
//report.setParamValue(String id, String value, String displayValue);//设置报表的参数默认值
var os = new ByteArrayOutputStream();
report.doExport("HTML","","",os,"","","");
var html = os.toString("utf8");
//logger.info(html);
report.close();
//发送邮件
multiPartEmail.setHtmlMsg(html);
multiPartEmail.send();
注:设置参数默认值可参考以下方式:

