【发布时间】: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']中的内容。否则,您正在查看路径遍历/文件包含漏洞。