`
swen00
  • 浏览: 62498 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

spring,jasperreports发送报表邮件

    博客分类:
  • java
 
阅读更多
前提:
1、版本要一致,偶这用的是jasperreports-4.1.2,iReport-4.1.1
2、编译好***.jasper
3、/html/image.jsp?image= 替换,是为了显示报表图片,之前用此jsp作为读取报表图片用。

public void process() {
        Connection conn = null;

        try { 
            //报表内嵌了SQL,只要传入参数,数据库连接即可。
            conn = dataSource.getConnection();          

            Map parameters = new HashMap();
            parameters.put("startTime", "20110101");
            parameters.put("endTime", "20111001");

            String jasperFile = "d://*****/" + "*****.jasper";

            File reportFile = new File(jasperFile);
            if (!reportFile.exists())
                throw new JRRuntimeException("File jasper not found. The report design must be compiled first.");

            JasperPrint jasperPrint =
                    JasperFillManager.fillReport(
                            jasperFile,
                            parameters,
                            conn
                    );

            JRHtmlExporter exporter = new JRHtmlExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            ByteArrayOutputStream htmlOutputData = new ByteArrayOutputStream();
            exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, htmlOutputData);
            exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, imageUrl);
            exporter.setParameter(JRHtmlExporterParameter.IMAGES_DIR_NAME, imagePath);
            exporter.setParameter(JRHtmlExporterParameter.IS_OUTPUT_IMAGES_TO_DIR, true);
            exporter.setParameter(JRHtmlExporterParameter.IS_USING_IMAGES_TO_ALIGN, false);
            exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");

            Map imageNameMap = new HashMap();
            exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imageNameMap);
            exporter.exportReport();
            //attach the html data from htmlOutputData

            byte[] imageData = null;
            for (Iterator it = imageNameMap.entrySet().iterator(); it.hasNext(); ) {
                Map.Entry entry = (Map.Entry) it.next();
                String imageName = (String) entry.getKey();
                imageData = (byte[]) entry.getValue();
                //attach imageData using imageName as Content-ID
            }

          
            sendEmail(htmlOutputData.toByteArray(), imageData, imageNameMap);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
            } catch (Exception e) {
            }
        }
    }


public void sendEmail(final byte[] attachmentData, final byte[] imageData, final Map<String, byte[]> imageNameMap) throws MessagingException {       

        String host = "smtp.126.com";
        final String account = "****@126.com";
        final String toAddress = "****@163.com";
        String username = ""****@126.com";
        String password = "******";


        JavaMailSenderImpl sender = new JavaMailSenderImpl();

        sender.setHost(host);
        sender.setUsername(username);
        sender.setPassword(password);

        MimeMessagePreparator preparator = new MimeMessagePreparator() {

            public void prepare(MimeMessage mimeMessage) throws Exception {
                Multipart multipart = new MimeMultipart();

                MimeBodyPart htmlAttachment = new MimeBodyPart();
                String html = new String(attachmentData, "utf-8");
                for (String imageName : imageNameMap.keySet()) {
                    html = html.replace("/html/image.jsp?image=" + imageName, "cid:" + imageName);
                }
                htmlAttachment.setContent(html, "text/html;charset=\"utf-8\""); //
                multipart.addBodyPart(htmlAttachment);
                //当你有多个报表图片时
                for (String imageName : imageNameMap.keySet()) {
                    MimeBodyPart imagebody = new MimeBodyPart();
                    imagebody.setContent(imageData, "application/octet-stream");
                    imagebody.setHeader("Content-ID", "<" + imageName + ">");

                    multipart.addBodyPart(imagebody);
                }


                mimeMessage.setContent(multipart);

                mimeMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(toAddress));
                mimeMessage.setFrom(new InternetAddress(account));

                mimeMessage.setSubject("test send jasperreports mail..");
            }
        };


        try {
            sender.send(preparator);
        } catch (MailException ex) {
            ex.printStackTrace();
        }

    }


分享到:
评论
1 楼 feifeiyang 2012-02-19  
能给个例子吗?

谢谢!


jasperreports-4.1.2,iReport-4.1.1


您这是两个jar包吗?

相关推荐

    综合spring mvc + spring + hibernate + bootstrap开发图书管理系统

    9. **报表生成**:如使用JasperReports或iText生成统计报告。 以上是基于给定标题和描述的图书管理系统开发过程中涉及的主要技术和知识点。这个系统全面展示了Java Web开发的流程和最佳实践,对于提升开发者的技术...

    Spring-Reference_zh_CN(Spring中文参考手册)

    14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.2.1. 配置ViewResolver 14.7.2.2. 配置View 14.7.2.3. 关于报表文件 14.7.2.4. 使用 JasperReportsMultiFormatView 14.7.3. 构造ModelAndView 14.7.4....

    java 报表制作

    - 可以提供下载链接或邮件发送功能,让用户自行获取报表。 10. **图表制作**: - Java报表库通常内置了各种图表类型,如柱状图、饼图、线图等。 - 图表数据可以从数据库或其他数据源动态获取。 总之,Java报表...

    jasperSoft报表文档.zip

    6. **报表分发**:讨论如何设置报表调度,自动定时发送报表到指定用户的电子邮件。 7. **安全性与权限管理**:概述如何为不同用户和组分配权限,确保数据访问的安全性。 **JasperReports-Ultimate-Guide-3.pdf** 很...

    JAVA 报 表 源 码

    这包括导出报表、打印报表、邮件发送报表等功能。 9. **Web应用集成**:在Web环境中,Java报表源码通常会集成到Servlet或Spring MVC等框架中,通过HTTP请求处理报表的生成和下载。 10. **自定义扩展**:除了使用...

    java+ireport报表开发实例

    例如,将其嵌入到Spring MVC的视图中,或者通过JavaMail发送报表作为附件。 **9. 性能优化** 对于大数据量的报表,考虑使用懒加载、分页和缓存策略来提高性能。此外,JasperServer是JasperReports提供的一个报表...

    Spring 2.0 开发参考手册

    14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成其它Web框架 15.1. 简介 15.2. 通用配置 15.3. JavaServer Faces...

    Spring中文帮助文档

    14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成其它Web框架 15.1. 简介 15.2. 通用配置 15.3. JavaServer Faces...

    spring chm文档

    14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成其它Web框架 15.1. 简介 15.2. 通用配置 15.3. JavaServer Faces...

    Spring API

    14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成其它Web框架 15.1. 简介 15.2. 通用配置 15.3. JavaServer Faces...

    OpenReports 开发实例

    6. **高级功能**:可能包括定时任务调度、邮件发送报表、自定义报表菜单等。 7. **实例解析**:提供具体的开发案例,如用户登录统计报表、销售数据分析报表等,帮助开发者理解并掌握OpenReports的使用方法。 通过...

    jasReport+ireport

    通过结合SSM框架,可以实现动态生成报表,根据用户权限控制报表访问,甚至实现定时任务自动生成报表并发送邮件通知。 总之,jasReport和iReport是Java报表领域的强大工具,它们为开发者提供了设计、生成和展示报表...

    springboot100精准扶贫管理系统.zip

    8. 邮件和短信通知:在系统中,可能会用到SpringMail发送邮件或使用第三方短信服务如阿里云SMS,进行通知和提醒。 开发过程中,开发者可能使用了Maven或Gradle作为构建工具,整合各种依赖,并使用Git进行版本控制。...

    sbhrm:使用Spring Boot的HR管理软件

    系统可能包括报表生成和数据分析功能,比如员工出勤率、离职率、工资统计等,这可能借助于Spring Boot集成的Thymeleaf或其他模板引擎来实现页面展示,或者通过JasperReports等工具生成PDF或Excel报表。 6. **任务...

    科研成果申报管理系统源码.zip

    6. 邮件通知:当项目状态变更时,系统自动发送邮件通知相关人员,这可以通过JavaMail API实现。 在技术选型上,这个系统可能采用了Spring Boot作为快速开发框架,它集成了Spring MVC、Spring Data、Spring Security...

    java简历上的项目集合大全

    此系统可能还会集成邮件服务,如使用JavaMail API发送通知邮件,以及通过Quartz或Spring Scheduler进行定时任务调度。 项目(三):网上图书销售系统 这类系统通常包含图书展示、购物车、支付、用户评论等功能。...

    基于SpringBoot的小学生身体素质测评管理系统源码数据库.doc

    - 技术实现:使用报表工具如 JasperReports 或 iReport 设计报表模板,通过后台生成并导出为 PDF 文件。 **5. 消息通知管理** - 功能描述:向用户发送通知,如测试变更、成绩发布等。 - 技术实现:集成邮件服务(如...

    Java人事管理系统

    20. **邮件服务**:如使用JavaMail发送通知邮件,提高系统自动化程度。 以上这些技术点是构建一个完整Java人事管理系统的基础,实际开发中还需要根据需求进行定制和优化,确保系统的稳定性和高效性。通过这个项目,...

    Java语言实现的学员管理系统

    邮件通知则可以使用JavaMail API发送电子邮件,提醒用户相关操作或事件。 此外,为了提高系统的可维护性和扩展性,开发过程中应遵循良好的编程规范,使用MVC(Model-View-Controller)设计模式将业务逻辑、数据处理...

    学生管理系统

    可以结合JavaMail API实现邮件发送功能,确保信息及时传达。 6. **权限管理**:根据角色分配不同的操作权限,如教师可以查看和修改学生信息,管理员则有更广泛的权限。这可以通过设计权限控制框架,如Spring ...

Global site tag (gtag.js) - Google Analytics