【问题标题】:Cannot see the images in outlook在outlook中看不到图片
【发布时间】:2022-01-26 13:55:56
【问题描述】:

我创建了一个带有一些文本、表格和图表的自动邮件。图表采用快速图表设计,采用以下方法。

$chartConfig= "{
  type: 'line',
  data: {
    labels: [$date_array2],
    datasets: [{
      data: [$value_array2],
      backgroundColor: ['#F5DEB3'],
    }]
  },
  options: {
    title: {
      display: true,
      text: 'UGW Peak Throughput in Malabe_LD_vUGW, in Gbps',
    },
    legend: {
      display: false    
    }
  }
}";


$url1 = 'https://quickchart.io/chart?w=500&h=200&c=' . urlencode($chartConfig);  


$messagenew.= "Chart :<br><br><img src=\"$url1 \">

我正确收到了电子邮件。但问题是我无法直接看到图表。每次我需要点击下载图片来查看图表。此外,我正在使用 VPN 连接查看邮件,但我看不到图像(即使它已下载)。没有VPN连接我可以在下载后看到图片。

有人可以提出更好的方法来使用 PHP 将图表附加到电子邮件中吗?

【问题讨论】:

  • 默认情况下,许多邮件客户端会阻止从 Web 服务器请求的图像(因为当收件人打开邮件时,它们会允许跟踪。)您实际上应该将此图像直接嵌入到邮件中。
  • @CBroe 谢谢。你能提供一些可行的例子来做到这一点吗?我该怎么做?
  • 如果您还没有使用专门的邮件程序库发送邮件,那么您应该首先获得一个 - PHPMailer 是一个流行的选择。如何使用可以研究的图像将图像嵌入到邮件中,这不是一个新主题,并且在图书馆的文档中也有介绍。
  • 不过,您将需要图像的本地副本;但是使用 file_get_contents 或 cURL,您应该能够从您到达那里的 URL 请求图像数据,并将其存储在本地。

标签: php outlook email-attachments


【解决方案1】:

您需要将图像添加为附件并在电子邮件的 HTML 正文中引用它。见https://stackoverflow.com/a/17197140/332059

【讨论】:

    【解决方案2】:

    Web 托管的图像可以被 Outlook 自动阻止。只有用户可以在 Outlook 中手动取消阻止它们。为防止出现这种情况,您可以附加所需的图像,并通过在附件上设置 PR_ATTACHMENT_HIDDEN 属性将其隐藏在 Outlook 的视图中:

    Const PR_ATTACHMENT_HIDDEN As String = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B"
    

    很可能您还需要在附件的代码中设置PR_ATTACH_CONTENT_ID 属性以在邮件正文中引用此类图像:

    Const PR_ATTACH_CONTENT_ID As String = "http://schemas.microsoft.com/mapi/proptag/0x3712001F"
    

    然后从消息体中你可以参考之前设置的属性值(cid:):

    attachment = MailItem.Attachments.Add("c:\temp\chart.jpg")
    attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F", "YourChart1")
    MailItem.HTMLBody = "<html><body>Test image <img src=""cid:YourChart1""></body></html>"
    

    Distinguish visible and invisible attachments with Outlook VBA 线程中了解更多信息。

    【讨论】:

    • 谢谢。我正在使用 php,但我没有使用 PHPMailer。那么我应该如何实现这些呢?
    • 该代码使用 Outlook 对象模型来添加图像和编辑邮件正文。但是您可以在任何工具或编程语言中使用相同的方法。
    猜你喜欢
    • 2020-04-01
    • 2020-05-02
    • 2014-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2020-12-28
    相关资源
    最近更新 更多