通过 PHPMailer 发送带有来自 URL 附件的电子邮件

Sending e-mail via PHPMailer with attachments from URL

我正在使用 PHPMailer。我要发送两个附件,都是links(一个是base64图片,第二个是url)。

// Variables with images
$croped_img = 'data:image/jpg;base64,/extreme_long_code_here';
$photo_thumbnail_url = 'http://t2.ftcdn.net/jpg/00/76/44/75/400_F_76447580_gOWAV0P8APW0iC51OsW5huD6qoiEsh7O.jpg';

// PHPMailer
$mail->addAttachment('$photo_thumbnail_url', 'selected.jpg');
$mail->addAttachment('$croped_img', 'croped_img.jpg');

PHPMailer 之所以有效,是因为如果我以这种形式发送电子邮件,则不会发送附件。 但是如果我 link 本地图像,例如'images/abc.jpg'然后他们来了。

我应该使用哪些 php 函数将我的变量作为电子邮件附件发送?

确保您的 PHPMailer 库是最新的!

然后试试这个,

$mail->AddEmbeddedImage($photo_thumbnail_url, 'selected.jpg');
$mail->AddEmbeddedImage($croped_img, 'croped_img.jpg');

一如既往,确保您使用的是最新版本的 PHPMailer。

您需要使用 addStringAttachment,文档 here:

$photo_thumbnail_url = 'http://t2.ftcdn.net/jpg/00/76/44/75/400_F_76447580_gOWAV0P8APW0iC51OsW5huD6qoiEsh7O.jpg';
$mail->addStringAttachment(file_get_contents($photo_thumbnail_url), 'selected.jpg');

msgHTML 函数会自动处理 data URL,将它们转换为具有自动 cid 值的嵌入图像,因此如果您的图像已经嵌入到您的 HTML,您无需执行任何操作即可运行。

如果你想自己处理数据 URL 转换,你可以看看它是如何工作的 here