вложение png, сгенерированное API в phpmailer

Я пытаюсь отправить изображение .png своему пользователю через phpmailer. Изображение показано, когда я использую <img> теги, но я хочу, чтобы он отображался как реальное вложение, которое пользователь может открыть / сохранить / распечатать (как в этот скриншот). Я прочитал, что я могу использовать $mail->addStringAttachment за это. Итак, я попробовал это, и он отправляет вложение вместе с письмом, но когда я пытаюсь открыть его, он говорит, что Windows Picture Viewer не может открыть файл. Также сохранение на моем компьютере и последующее открытие с помощью Paint не работает, оно говорит мне, что это не правильный файл или что-то в этом роде. Я думаю, что это потому, что это не статическое изображение, а изображение, сгенерированное API, а именно:

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

Так этот изображение должно быть отправлено в виде вложения. Кто-нибудь знает, как я могу сделать эту работу?

1

Решение

Причиной неудачи является то, что вы пытаетесь прикрепить URL-адрес в качестве данных изображения. Вам нужно сначала извлечь данные из URL, а затем прикрепить их к чему-либо.

Делайте один шаг за раз — убедитесь, что вы получаете верное изображение, прежде чем пытаться отправить его по электронной почте — например,

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

и убедитесь, что вы получите действительное изображение, сохраненное там. Если вы знаете, что это работает, то попробуйте отправить по электронной почте

$mail->addStringAttachment(file_get_contents($qr) 'qr.png');

Хотя, возможно, с еще большей проверкой ошибок!

0

Другие решения

Я получил его в качестве приложения, выполнив следующие действия:

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector