我想发一些新闻稿,我写了一封HTML电子邮件,在中间有一张图片。如果我使用图像的绝对路径,如果我在服务器中替换该图像,旧的电子邮件也会更新(因为它们是对绝对路径的引用(。相反,我想要一个相对路径,或者以某种方式将图像嵌入电子邮件的那一部分(而不是附件(,这样电子邮件就是静态的,即使我在下个月替换该图像,也不会产生影响。
我想每个月都保持相同的文件名,这样我就可以简单地用另一个同名的图像替换图像,并用PHPMailer重新发送电子邮件。
此外,如果我嵌入图像而不是添加完整路径,这会使其更加安全,因为我不希望任何人使用链接访问图像,只有当他们收到电子邮件时。如果我给他们完整的路径,有人可以分发图片,他们每个月都会得到免费的图片,因为我会在同一个URL中更新它。
有什么变通办法或解决方案吗?
您写道:"或者以某种方式将图像嵌入电子邮件的该部分(而不是作为附件(,这样电子邮件就是静态的,即使我在下个月替换该图像,也不会产生影响">
如果你不想把它作为附件嵌入并链接到它,让我们把图像嵌入到没有附件的邮件正文中。
首先获取图像的base64字符串:
$img=file_get_contents("some_image.jpg");
echo base64_encode($img);
您将看到图像的base64编码字符串,类似于"QSkZJRgABAgEAYABgA……",只是把这个字符串放进你的电子邮件正文:
$mail_body="
<html>
<head>
</head>
<body>
bla bla bla
<img src="data:image/jpeg;base64,QSkZJRgABAgEAYABgA....." />
bla bla bla
</body>
</html>";
如果您使用"phpmailer"发送电子邮件,请不要忘记在phpmailer中添加以下参数:
$mail->Body = $mail_body;
$mail->IsHTML(true);