我正在努力通过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(),但一无所获。
在此先感谢您的帮助!
答案 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类型选项-它们是自动设置的。