【问题标题】:Laravel Qr Code Not Working While Sending EmailLaravel 二维码在发送电子邮件时不起作用
【发布时间】:2023-03-12 02:18:01
【问题描述】:

我正在使用 Laravel 版本“5.8”

我已经安装了 composer require simplesoftwareio/simple-qrcode - 生成二维码

要在视图上生成二维码,我正在使用此代码

 {!! QrCode::size(80)->generate('test data' ); !!}

但是当我通过邮件发送视图时,我没有通过邮件获得二维码

这是我的控制器代码

        $email = $userInfo['email'];
        $name = $userInfo['fname'];
        $subject = 'Test mail';
        $ccmail = 'test@gmail.com';
        $body = 's';
        Mail::to($email)->send(new Invitationmail($name,$subject,$ccmail,$body,$invitation_id));

查看代码

  </div>
    <td>{!! QrCode::size(80)->generate('asas' ); !!}</td>
    {!! QrCode::size(200)->generate('W3Adda Laravel Tutorial'); !!}
  <div>

有人可以帮我解决这些问题吗? 谢谢

【问题讨论】:

  • {!! QrCode::size(200)-&gt;generate('W3Adda Laravel Tutorial'); !!} 输出什么? &lt;img&gt; 标签?也许它使用了没有域的链接 (/foo.png) 或无法解析的 localhost URL?
  • @ceejayoz 它会生成一个 svg - xmlns="w3.org/2000/svg"
  • 并非所有电子邮件客户端都支持 SVG;您可能想找到一种将其转换为 PNG 的方法。
  • 感谢@ceejayoz ,将看看转换它

标签: php laravel laravel-5 npm


【解决方案1】:

我遇到了同样的问题,但我使用的是 laravel8。我在其他地方找到了一些答案,这些答案向我展示了如何创建 PNG(默认情况下,QrCode 创建一个大多数电子邮件客户端不会显示的 svg)。

我使用我找到的示例将 QR 码创建为 png,当我在浏览器的虚拟刀片上查看我的电子邮件内容时,它的效果非常好。我使用了以下代码:

<img src="data:image/png;base64, {!! base64_encode(QrCode::format('png')->size(100)->generate('QrCode as PNG image!')) !!}" />

但是,许多电子邮件服务(包括 Gmail)不显示使用上述内联 base64 的图像。相反,他们要求您将 base64 图像作为附件添加到电子邮件中,然后在 img src 中引用该附件。

谢天谢地,laravel(我正在使用 laravel8)有一个非常酷的功能可以为您完成这项工作,所以我的代码最终看起来像这样(有效):

              <?php
                  $qrCodeAsPng = QrCode::format('png')->size(500)->generate("my text for the QR code");
              ?>
              <img src="{{ $message->embedData($qrCodeAsPng, 'nameForAttachment.png') }}" />

$message 变量是在 laravel 中作为电子邮件发送的每个刀片中的变量。在我的例子中,我不想在服务器上创建一个实际的图像,但是如果你想使用你存储的图像,你可以使用 $message->embed()。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2021-09-27
    • 2013-01-22
    • 2012-09-11
    • 2016-02-11
    • 2012-08-01
    • 2018-10-30
    相关资源
    最近更新 更多