Я пытаюсь отправить изображение .png своему пользователю через phpmailer. Изображение показано, когда я использую <img>
теги, но я хочу, чтобы он отображался как реальное вложение, которое пользователь может открыть / сохранить / распечатать (как в этот скриншот). Я прочитал, что я могу использовать $mail->addStringAttachment
за это. Итак, я попробовал это, и он отправляет вложение вместе с письмом, но когда я пытаюсь открыть его, он говорит, что Windows Picture Viewer не может открыть файл. Также сохранение на моем компьютере и последующее открытие с помощью Paint не работает, оно говорит мне, что это не правильный файл или что-то в этом роде. Я думаю, что это потому, что это не статическое изображение, а изображение, сгенерированное API, а именно:
$qr = 'http://api.qrserver.com/v1/create-qr-code/?data=' . $guid . '&size=250x250';
Так этот изображение должно быть отправлено в виде вложения. Кто-нибудь знает, как я могу сделать эту работу?
Причиной неудачи является то, что вы пытаетесь прикрепить URL-адрес в качестве данных изображения. Вам нужно сначала извлечь данные из URL, а затем прикрепить их к чему-либо.
Делайте один шаг за раз — убедитесь, что вы получаете верное изображение, прежде чем пытаться отправить его по электронной почте — например,
file_put_contents('qr.png', file_get_contents($qr));
и убедитесь, что вы получите действительное изображение, сохраненное там. Если вы знаете, что это работает, то попробуйте отправить по электронной почте
$mail->addStringAttachment(file_get_contents($qr) 'qr.png');
Хотя, возможно, с еще большей проверкой ошибок!
Я получил его в качестве приложения, выполнив следующие действия:
$qr = file_get_contents("https://api.qrserver.com/v1/create-qr-code/?size=150x150&data=Example");
$mail->addStringAttachment($qr, "qr.png");