PHPMailer и прикрепление PHP сгенерированного PNG - PullRequest
0 голосов
/ 30 октября 2018

Я борюсь с отправкой png-файла, сгенерированного php-кодом через PHPMailer.

Итак, 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 голосов
/ 30 октября 2018

Делаем это:

$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-типа - они устанавливаются автоматически.

...