我正在尝试通过phpmailer向我的用户发送.png图像。当我使用 <img>
标签时会显示图像,但我希望它显示为用户可以打开/保存/打印的真实附件(如此屏幕截图所示)。我读到我可以为此使用$mail->addStringAttachment
。所以我尝试了这个,它确实发送了一个带有电子邮件的附件,但是当我尝试打开它时,它说 Windows 图片查看器无法打开该文件。也保存到我的电脑,然后用画图打开不起作用,它告诉我这不是一个有效的文件或其他东西。我认为这是因为它不是静态图像,而是由 API 生成的图像,即:
$qr = 'http://api.qrserver.com/v1/create-qr-code/?data=' . $guid . '&size=250x250';
因此,此图像应作为附件发送。有谁知道我如何做到这一点?
通过执行以下操作,我让它作为附件正常工作:
$qr = file_get_contents("https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Example");
$mail->addStringAttachment($qr, "qr.png");
失败的原因是您尝试将 URL 附加为图像数据。您需要先从URL获取数据,然后将其附加到某些内容。
一次一步 - 确保在尝试通过电子邮件发送之前取回有效的图像 - 例如
file_put_contents('qr.png', file_get_contents($qr));
并确保在其中保存了有效的图像。当您知道这有效时,请尝试通过电子邮件发送
$mail->addStringAttachment(file_get_contents($qr) 'qr.png');
虽然可能会有更多的错误检查!