Home > Net >  Unable to embed base64 image URI in mail using PHPMailer
Unable to embed base64 image URI in mail using PHPMailer

Time:01-12

I am generating QR codes using problem

I have the SMTPDebug=1 and it is not giving me any error

Here is a URI that I'm generating as an example:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAFACAIAAABC8jL9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAFEUlEQVR4nO3dQY7bQBAEQdPw/78sP2HHBhutJCPOC61EKTGnwlyfz cX0PR7 w0A/0/AECZgCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAIEzCE/Tn8u u6Rt/HM5wvQ573PN/82SccPk8nMIQJGMIEDGEChjABQ5iAIUzAECZgCBMwhAkYwgQMYQKGMAFD2Oka6dzz7mqZWM9MbHd2X3OC39KPnMAQJmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIQJGMIEDGH3r5HO7d6R8 aly5s/ 4TF5 kEhjABQ5iAIUzAECZgCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAI21wjseXNu6WHcQJDmIAhTMAQJmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIRZI3278z3QxMbIbunLOYEhTMAQJmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIQJGMI210j2K/ea2BhVvPa35ASGMAFDmIAhTMAQJmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAi7f430vKXLhMo9Rrvfpt/Sj5zAECZgCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAIEzCECRjCBAxh12svldn1vJ2NH9IKJzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIQJGMIEDGEChjABQ9jp3UgT65ndG3p27xx63mc/N/E8K27/7E5gCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAIEzCECRjCBAxhAoaw0zXShMoqZeK/Vz57xcTzTHxHTmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIQJGMIEDGEChrD710i7251dE3cj7dq9RWnC7vu8/Xt3AkOYgCFMwBAmYAgTMIQJGMIEDGEChjABQ5iAIUzAECZgCBMwhF23zyN2b6k5V7nxqPKaFbu/pdufvBMYwgQMYQKGMAFDmIAhTMAQJmAIEzCECRjCBAxhAoYwAUOYgCHs9G6kiQ3H7i01D1ulDL3mhMr7THACQ5iAIUzAECZgCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAIEzCEna6R7EK X Wuqcq KvGbdwJDmIAhTMAQJmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIRdh5OL3XuMKib2K5U7nCoe9h05gSFMwBAmYAgTMIQJGMIEDGEChjABQ5iAIUzAECZgCBMwhAkYwk7vRjqXuFHmn1QWOZWN0e77nLhvafETOYEhTMAQJmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIQJGMLuXyOdq2xiJkxsYnbtbowm/nviO3ICQ5iAIUzAECZgCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAIEzCEba6ROFG5mencxHan8pRu/ xOYAgTMIQJGMIEDGEChjABQ5iAIUzAECZgCBMwhAkYwgQMYQKGMGukHbuLnOfdC7X7PBdve3ICQ5iAIUzAECZgCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAIEzCEba6RdjcxuyrLoXO7txPtPs/z17z9KTmBIUzAECZgCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAIEzCECRjCrsMhxe7WpGJxlTKksoU6t/vkb3 eTmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIQJGMIEDGEChrDTNRLwhZzAECZgCBMwhAkYwgQMYQKGMAFDmIAhTMAQJmAIEzCECRjC/gIsHA2FiBfxDQAAAABJRU5ErkJggg==

EDIT: It seems the format of data is wrong, how should I output the QR code so i can embed it in the mail?

Here is my generateQR function after trying out what @Synchro said:

function generateQR($requestId){
    try {
        $writer = new PngWriter();
        $qrCode = QrCode::create($requestId)
        ->setEncoding(new Encoding('UTF-8'))
        ->setErrorCorrectionLevel(new ErrorCorrectionLevelLow())
        ->setSize(300)
        ->setMargin(10)
        ->setRoundBlockSizeMode(new RoundBlockSizeModeMargin())
        ->setForegroundColor(new Color(0, 0, 0))
        ->setBackgroundColor(new Color(255, 255, 255));

        $result = $writer->write($qrCode);
        echo $result->getString()
        } 
    catch (\Throwable $th) {
            echo $th;
        }
}

CodePudding user response:

PHPMailer doesn't have any support for data URIs, largely because it's not a good idea to use them because they have so many compatibility issues across email clients. Better to use a regular embedded image. To do that all you need to do is pass binary PNG data into that first param of the call to addStringEmbeddedImage instead of the URI-encoded data. I assume you'll need to amend your generateQR function to give you the data in that format.

  •  Tags:  
  • Related