【问题标题】:PHP Mailer Embed Image from $_GETPHP Mailer 嵌入来自 $_GET 的图像
【发布时间】:2018-09-14 18:46:54
【问题描述】:

我正在尝试将图像嵌入来自上一页表单的电子邮件中,但是当我发送电子邮件时,它说图像不存在。我正在使用 $_GET 来提取图像文件名,然后将其放入图像的 src 中。我有一种感觉,我在“AddEmbeddedImage”部分中的路径是错误的,但不知道如何把它放在里面。如果我将 $_GET['imagebase64'] 放在 HTML 内图像的 src 中并查看电子邮件的源代码,它会给出文件名,所以我知道它正确地拉过它。

$mail->AddEmbeddedImage('"/images/visitor-photos/'.$_GET['imagebase64'].'"', 'visitorimg');

    $mail->isHTML(true);
    $mail->Subject = 'Your visitor has arrived!';
    $mail->Body    = '<div style="font-family: Open Sans; text-align:center;">
        <p style="margin-bottom:10px; font-size:30px;">'.ucfirst($_GET['firstName']). " " . ucfirst($_GET['lastName']) .' has just signed in and is waiting for you at reception.</p><br>
        <img width=500 height=375 src="cid:visitorimg"/><br>
        <img width=400 height=75 style="margin-top=150px;" src="/images/VMS-Logo.png"/></div>';

【问题讨论】:

  • 我建议在使用之前根据允许的文件名白名单验证 $_GET['imagebase64'] 中的内容。否则,您正在查看路径遍历/文件包含漏洞。

标签: php phpmailer


【解决方案1】:

那里不需要双引号,试试这个(并检查路径是否正确):

$mail->AddEmbeddedImage('/images/visitor-photos/'.$_GET['imagebase64'], 'visitorimg');

【讨论】:

  • 我已经添加了,但仍然没有工作,但它似乎只有在图像位于 php 文件所在的根目录中时才有效。
  • 然后检查你的路径,你可能需要给出绝对路径
猜你喜欢
  • 1970-01-01
  • 2021-07-16
  • 2012-12-24
  • 2021-01-03
  • 2019-07-22
  • 2019-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多