【发布时间】:2010-03-22 20:01:40
【问题描述】:
如何将 JSP 页面输出的全部内容作为 HTML 或 PDF 电子邮件附件通过电子邮件发送?
【问题讨论】:
如何将 JSP 页面输出的全部内容作为 HTML 或 PDF 电子邮件附件通过电子邮件发送?
【问题讨论】:
如果请求是idempotent(如GET请求是),那么只需使用java.net.URL即可获得JSP输出的InputStream。例如
InputStream input = new URL("http://example.com/context/page.jsp").openStream();
如果请求不是幂等的(例如POST请求是),那么您需要创建一个Filter其中wrapsServletResponse与PrintWriter的自定义实现与五个@987654339 @ 方法被覆盖,其中您将输出复制到存储在会话中的某个缓冲区/构建器或本地磁盘文件系统的临时文件夹中,以便以后可以在后续请求中访问它。代码示例可以在我之前here发布的答案中找到。
要将其作为电子邮件发送,请使用JavaMail API 或更方便的Apache Commons Email。代码示例可以在他们的文档/指南/FAQ 中找到。
如果您想先将 HTML 转换为 PDF,请查看 XhtmlRenderer。代码示例可以在here找到。
【讨论】:
可以先用javascript获取html源代码。
var source = document.getElementsByTagName('html')[0].innerHTML
然后您可以将此源存储在隐藏字段中,并在用户单击提交按钮时发送。如果你想在页面加载时使用 ajax 发送源代码。
为确保您获得完整的 html 源代码,请确保在页面加载之前获得它。
【讨论】: