PHPMailer 添加 php 生成的 png 附件

PHPMailer and attachement of a php generated png

我正在努力通过 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(),但一无所获。

在此先感谢您的帮助!

这样做:

$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 类型选项 - 它们是自动设置的。