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