由phpmailer中的API生成的png附件

时间:2015-01-17 22:30:38

标签: php attachment phpmailer

我正在尝试通过phpmailer向我的用户发送.png图像。当我使用<img>标签时会显示图像,但我希望它显示为用户可以打开/保存/打印的真实附件(如this screenshot中所示)。我读到我可以使用$mail->addStringAttachment。所以我尝试了这个,它确实发送了一封电子邮件的附件,但当我尝试打开它时,它说Windows Picture Viewer无法打开该文件。保存到我的电脑然后用Paint打开不起作用,它告诉我这不是一个有效的文件或东西。我认为这是因为它不是静态图像,而是由API生成的图像,即:

$qr = 'http://api.qrserver.com/v1/create-qr-code/?data=' . $guid . '&size=250x250';

所以this图片应作为附件发送。有谁知道我怎么能做这个工作?

2 个答案:

答案 0 :(得分:1)

通过执行以下操作,我可以将其作为附件正常工作:

$qr = file_get_contents("https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Example");

$mail->addStringAttachment($qr, "qr.png");

答案 1 :(得分:0)

它失败的原因是您尝试将网址附加为图片数据。您需要先从URL获取数据,然后将其附加到某些内容。

一次一步 - 确保在尝试通过电子邮件发送之前恢复有效图像 - 例如。

file_put_contents('qr.png', file_get_contents($qr));

并确保您获得保存在其中的有效图片。当您知道它正在工作时,请尝试通过

发送电子邮件
$mail->addStringAttachment(file_get_contents($qr) 'qr.png');

虽然可能会有更多的错误检查!