2.1效果
2.2操作步骤:
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 mailAlias = 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_ADDRESSALIAS")) { fromAddress { mailAlias = config.getValue(); } else if (config.getKey().equals("EMAIL_USER_PASSWORDADDRESS")) { password 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); if (!StringUtil.isNullOrEmpty(password)) { multiPartEmail.setAuthentication(userName, password); } multiPartEmailif(mailAlias){ multiPartEmail.setFrom(fromAddress, mailAlias); } else{ 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 //设置同个参数多个默认值,如:report.setParamValue("OutputParameter.I40282124232b5300014d503ddc0b1401.p_year_curr", "2015,2016,2017", "2015,2016,2017"); var os = new ByteArrayOutputStream(); report.doExport("HTML","","",os,"","",""); var html = os.toString("utf8"); //logger.info(html); report.close(); //发送邮件 multiPartEmail.setHtmlMsg(html); multiPartEmail.send(); |
注:设置参数默认值可在【系统运维】 3、在左边资源树上的【系统运维】->【计划任务】->【数据集】中打开指定的数据集,参考以下方式:
>【计划】中新建一个计划,设置待执行任务为刚刚创建的任务,并设置计划运行的周期,如下图:
3、在左边资源树上的【系统运维】->【计划任务】->【计划】中新建一个计划,设置待执行任务为刚刚创建的任务,并设置计划运行的周期,如下图: 4、可参考示例资源 migrate(邮件发送电子表格报表内容).xml
3.
邮件发送电子表格导出图片发送电子表格导出图片
3.1效果
3.2操作步骤
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(); //服务器地址,例如qq邮箱为smtp.qq.com var mailServer = null; var//发送方邮箱 fromAddress = null; var userNamefromAddress = null; //发送方账号 var passworduserName = null; //发送方的SMTP密码,需要事先开通邮箱账号的SMTP服务 var password = null; var encryptPassword = null; var emailSSLEnabled = null; var emailTLSEnabled = null; var mailAlias = 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_ADDRESSALIAS")) { fromAddress { mailAlias = config.getValue(); } else if (config.getKey().equals("EMAIL_USER_PASSWORDADDRESS")) { fromAddress password= config.getValue(); } else if (config.getKey().equals("EMAIL_USER_PASSWORD_ENCRYPT")) { encryptPassword password= config.getValue(); } else if (config.getKey().equals("EMAIL_SSLUSER_PASSWORD_ENABLEDENCRYPT")) { encryptPassword if= (config.getValue().equals("true")) {; } else emailSSLEnabled = true; } } else if (config.getKey(if (config.getKey().equals("EMAIL_TLSSSL_ENABLED")) { if (config.getValue().equals("true")) { emailTLSEnabledemailSSLEnabled = true; } } else if (config.getKey().equals("EMAIL_SMTPTLS_PORTENABLED")) { //端口 port = if (config.getValue().trimequals(); }"true")) { } } //emailTLSEnabled = System.out.println(mailServer);true; // System.out.println(fromAddress); // System.out.println(password); if (StringUtil.equals(encryptPassword, "true")) { } password = AESCryption.decrypt(password); } multiPartEmail.setHostName(mailServer); }else multiPartEmail.setAuthentication(userName, password); multiPartEmail.setFrom(fromAddress); if(emailSSLEnabled){if (config.getKey().equals("EMAIL_SMTP_PORT")) { //端口 port = config.getValue().trim(); } multiPartEmail.setSSL(true); } if(port != ""){ } // System.out.println(mailServer); // multiPartEmail.setSslSmtpPort(portSystem.out.println(fromAddress); // System.out.println(password); if (StringUtil.equals(encryptPassword, "true")) { } } password = ifAESCryption.decrypt(emailTLSEnabledpassword){; } multiPartEmail.setTLSsetHostName(truemailServer); if (!StringUtil.isNullOrEmpty(password)) { multiPartEmail.setAuthentication(userName, password); } if(port != "" && !emailSSLEnabled){ mailAlias){ multiPartEmail.setFrom(fromAddress, mailAlias); } else{ multiPartEmail.setSmtpPortsetFrom(portfromAddress); } if(emailSSLEnabled){ } multiPartEmail.addTo("21206373@qq.com");//接收邮箱地址setSSL(true); //multiPartEmail.addTo("zhouyan1@smartbi.com.cn");//再添加接收邮箱地址if(port != ""){ multiPartEmail.setCharset("GBK");//邮件内容字符集 multiPartEmail.setSubjectsetSslSmtpPort("测试邮件"port);//邮个把标题 } } report = new SSReportif(connectoremailTLSEnabled);{ reportmultiPartEmail.opensetTLS("I8a87946850215270014d65ed454c1f6e"true); //报表资源ID } report.setParamValue("OutputParameter.I40282124232b5300014d503ddc0b1401.p_year_curr", "2015", "2015");//设置报表的参数默认值if(port != "" && !emailSSLEnabled){ //reportmultiPartEmail.opensetSmtpPort("I8a87946850215270014d65ed454c1f6e"port); //第二报表资源ID } //report.setParamValue multiPartEmail.addTo("OutputParameter.I40282124232b5300014d503ddc0b1401.p_year_curr", "2015", "2015"21206373@qq.com");//第二报表资源设置报表的参数默认值接收邮箱地址 var pngFile = File.createTempFile("emailtask",".png");//multiPartEmail.addTo("zhouyan1@smartbi.com.cn");//再添加接收邮箱地址 var os = new FileOutputStream(pngFile);multiPartEmail.setCharset("GBK");//邮件内容字符集 reportmultiPartEmail.doExportsetSubject("PNG","","",os,"","","");测试邮件");//邮个把标题 os.flush(); report = new os.closeSSReport(connector); report.closeopen("I8a87946850215270014d65ed454c1f6e"); //报表资源ID var fileLen = pngFile.length(); report.setParamValue("OutputParameter.I40282124232b5300014d503ddc0b1401.p_year_curr", "2015", "2015");//设置报表的参数默认值 //发送邮件 report.open("I8a87946850215270014d65ed454c1f6e"); //第二报表资源ID var cid = multiPartEmail.embed(pngFile); //report.setParamValue("OutputParameter.I40282124232b5300014d503ddc0b1401.p_year_curr", "2015", "2015");//第二报表资源设置报表的参数默认值 var sbpngFile = new StringBuffer(File.createTempFile("emailtask",".png"); sb.append("<html><body>length:"+ fileLen +"<img src=\"cid:"+cid+"\"></body></html>"var os = new FileOutputStream(pngFile); sbreport.append("\ndoExport("PNG","","",os,"","",""); os.flush(); os.close(); var html = sbreport.toStringclose(); multiPartEmail.setHtmlMsg(html); multiPartEmail.send(); |
3、在左边资源树上的【系统运维】->【计划任务】->【计划】中新建一个计划,设置待执行任务为刚刚创建的任务,并设置计划运行的周期,如下图:
var fileLen = pngFile.length();
//发送邮件
var cid = multiPartEmail.embed(pngFile);
var sb = new StringBuffer();
sb.append("<html><body>length:"+ fileLen +"<img src=\"cid:"+cid+"\"></body></html>");
sb.append("\n");
var html = sb.toString();
multiPartEmail.setHtmlMsg(html);
multiPartEmail.send();
|
3、在左边资源树上的【系统运维】->【计划任务】->【计划】中新建一个计划,设置待执行任务为刚刚创建的任务,并设置计划运行的周期,如下图:
4、可参考示例资源 migrate(邮件发送电子表格导出图片).xml
4.注意事项
1、需要修改的部分如下图
2、设置参数默认值可在【系统运维】->【数据集】中打开指定的数据集,参考以下方式:
3、发送报表内容到正文注意
(1)示例中接收邮箱建议使用foxmail客户端查看,使用网页版邮箱可能会产生格式丢失的问题(原因:网页版邮箱对部分html标签的解析不兼容,导致会屏蔽很多信息),使用outlook客户端可能存在正文被转换成html附件的情况(由于部分邮箱服务器的限制)。
(2)电子表格必须是纯表格(文本),不能存在图形,如果存在图形或其他非文本内容会存在发送的正文存在问题;
(3)不支持有多个sheet 页的电子表格。
上述场景建议考虑使用导出图片的方式。