PHPMailer和附加的php生成的png

时间:2018-10-29 22:30:13

标签: php phpmailer

我正在努力通过PHPMailer发送由php代码生成的png文件。

所以button.php看起来像这样:

    header("Content-type: image/png");
$string = $_GET['mail'];
$im     = imagecreatefrompng("button.png");
$orange = imagecolorallocate($im, 0, 0, 0);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, 400, 55, $string, $orange);
imagepng($im);
imagedestroy($im);

我正在尝试与此发送它:

$mail->addStringAttachment("button.php?mail=somemail", "filename.png", 'base64', 'image/png');

我收到邮件,但是附件文件损坏。实验过file_get_contents(),但一无所获。

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这样做:

$mail->addStringAttachment("button.php?mail=somemail", "filename.png", 'base64', 'image/png');

将文字字符串button.php?mail=somemail作为PNG文件附加,显然不是。

PHPMailer故意避免充当HTTP客户端-由您自己决定-因此您应该执行以下操作:

$imagedata = file_get_contents('https://www.example.com/button.php?mail=somemail');
if (false !== $imagedata) {
    $mail->addStringAttachment($imagedata, 'filename.png');
}

这使您可以在尝试附加结果之前知道请求是否成功,这比内联处理要好得多。

请注意,在这种情况下,您不需要编码或mime类型选项-它们是自动设置的。