如何在邮件中显示二维码图片?

How to display qrcode image in email?

我正在使用 endroid/qr-code https://github.com/endroid/qr-code 生成二维码。 现在我也需要把这个二维码发到我的邮箱。

我使用了以下代码:

    $result = Builder::create()
        ->writer(new PngWriter())
        ->writerOptions([])
        ->data("This ist test page.")
        ->encoding(new Encoding('UTF-8'))
        ->size(200)
        ->margin(10)
        ->roundBlockSizeMode(new RoundBlockSizeModeMargin())
        ->logoPath($webPath)
        ->labelText('SCAN')
        ->build();

    return $result->getDataUri();

在我的电子邮件分支页面上,我有

<img src = {{ $return_from_result_getDataUri }} >

我正在从上面的行中获取损坏的 img。

当我使用 {{ $return_from_result_getDataUri }} 时,这会显示 data:image/png;base64..... 文本。

谁能帮帮我。

谢谢。

对在电子邮件中嵌入带有数据 URI 的图像的支持仍然不是最佳的,许多电子邮件客户端根本不支持它。

看到 this analysis from Campaign Monitor 显示许多客户端未呈现数据 URI 图像。

我强烈建议您将二维码上传到某处,然后link将其作为普通图片。

如果您的服务托管在 AWS 上,您可以使用 S3。

否则你可以使用免费服务,但我没有任何经验。这是我找到的第一个结果:https://apidocs.imgur.com/

PS:只是补充一点,您的代码中可能也缺少一些双引号。

<img src="{{ $return_from_result_getDataUri }}" >
<img src = {{ $return_from_result_getDataUri }} >

在PHP中,我们将上面的写成如下

<img src="<?php echo $return_from_result_getDataUri; ?>" >

但这可能不适用于所有电子邮件客户端。有两种方法可以解决这个问题。

方法一: 正如安德里亚提到的那样,将文件保存在某处

 $result->saveToFile(`__DIR__`.'/qrcode.png');

然后在 html img 标签中使用 url。

<img src="<?php echo $fullImageUrl; ?>">

方法二: 将图像作为附件嵌入并使用 cid(content id)

引用它

这个解释的很好here