php - Laravel 二维码在发送电子邮件时不起作用
问题描述
我正在使用 Laravel 版本“5.8”
我已经安装了 composer require simplesoftwareio/simple-qrcode - 生成 qr 代码
要在视图上生成二维码,我正在使用此代码
{!! 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>
有人可以帮我解决这些吗?谢谢
解决方案
我有同样的问题,但我正在使用 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()。
推荐阅读
- python - 使用 trimesh 制作一个不透水的形状
- influxdb - 如何在 InfluxDB 查询中使用样本数据进行测试?
- c# - 混淆后:新的.exe找不到连接字符串?
- keycloak - keycloak 是否可以通过自定义属性过滤用户
- javascript - 下午错误!缺少脚本:构建。我尝试构建一个 js 文件。我有 npm 库/
- c# - 如何在 C# ClickOnce 安装应用程序中引用二进制文件
- php - Laravel - with() 条件
- php - 带模式的php格式字符串
- outlook - 创建全天事件 msgraph API
- linux - bash 退出状态中 -e、-u 和 -o pipefail 的区别