【问题标题】:How to mail HTML/CSS output as attachment?如何将 HTML/CSS 输出作为附件发送?
【发布时间】:2025-11-30 21:55:02
【问题描述】:

我为一个用 PHP 编码的后端业务软件套件做出了贡献。我们的客户要求我们所知道的报告——充满图表、表格、视觉效果——可以通过电子邮件发送。他们会为每个用户安排一个特定邮件的发送时间,然后它会运行一个包含他们想要的选项的报告,然后基本上复制输出的内容并发送出去。

我们已经做了类似的事情,但是教这些报告如何从屏幕转到电子邮件是一个非常详尽的过程;浮动 div 很乱,Outlook 2007 破坏了各种样式。

我正在询问如何获取输出并将其保存为电子邮件的附件。那将是他们的报告。目前我们只是直接从 cron-run PHP 文件中打印出一封 HTML 邮件。

我研究过 PDF 转换器,但它们可能无法正常工作;我们可以没有图表,但我们的很多样式不会被 PDF 正确解释。理想的产品是能够“截取”我们的输出并将其保存为 JPG 的产品,如果这样的东西可能存在的话。我的问题基本上是,有没有人知道如何通过将输出放入 JPG 来为我们节省大量工作以获得更好的产品?我知道它必须从浏览器呈现,这可能是一个愚蠢的想法,但希望有人能引导我走向正确的方向。

【问题讨论】:

  • 这是一个非常广泛的问题,对 SO 来说并不是很好,但这里有一个链接可以帮助你解决问题 github.com/niklasvh/html2canvas
  • 我担心它太宽泛了。不过,谢谢你的链接,虽然我不认为 html2canvas 可以在后端运行?这一切都计划通过 cron 运行。
  • 你有没有看过这里的 PHP 邮件功能:php.net/manual/en/function.mail.php
  • @eyeLoveFiddle 我们已经通过 PHP 的邮件功能将一些报告作为 HTML 电子邮件发送。也相当坚固。感谢您的反对。
  • @VaelVictus 那么为什么将它写入附件并发送它这么难?

标签: php css email pdf-generation


【解决方案1】:

根据我的个人经验,正如我为我们的平台所做的那样,我们将 html 生成为常规页面,然后通过电子邮件发送,注意使用图像的相对路径,然后使用 PHPMailer 发送它SMTP 服务器。

我们将报告作为邮件正文而不是附件发送。

作为附加提示,我们使用 Javascript 库来制作图表,作为中间步骤,通过 CasperJS 将图表渲染为 PNG,这样我们就可以在 Chrome/Firefox 中开发非常漂亮的图表,然后静态渲染这些图表通过电子邮件发送。

【讨论】:

  • 这个 CasperJS 技巧非常有趣,我会保留它的书签。谢谢。我想我们最终会走这条路……星期一。 ;}
  • 我们的设置基本上是 PHPMailer -> Postfix Smarthost -> SendGrid 中继。
最近更新 更多