Laravel 通知 - 延迟电子邮件发送并在满足条件时取消

2024-01-11

我有一个应用程序,我在其中发送推送通知,如果用户登录到该应用程序,那就没问题 - 但是,如果他们没有登录/如果他们在 X 分钟内没有阅读通知,我想向他们发送一封电子邮件。

我的方法是使用 Laravel 通知来创建邮件、广播和数据库通知。上toMail()方法我延迟返回可邮寄的邮件 -

public function toMail($notifiable)
{
    return (new \App\Mail\Order\NewOrder($this->order))
        ->delay(now()->addMinutes(10));
}

分钟结束后,电子邮件将发送but,在发送继续之前,我想执行检查以查看推送/数据库通知是否已标记为已读以及是否已取消电子邮件发送。我能想到的唯一方法就是绑定到MessageSending被烘焙到 Laravel 中的事件 -

// listen for emails being sent
'Illuminate\Mail\Events\MessageSending' => [
    'App\Listeners\Notification\SendingEmail'
],

唯一的问题是这个监听器收到一个 Swift 邮件事件,而不是我发送的原始邮件事件,所以我不知道如何取消它。有什么想法并提前致谢吗?


类扩展通知

public function via($notifiable)
{
    if($this->dontSend($notifiable)) {
        return [];
    }
    return ['mail'];
}

public function dontSend($notifiable)
{
    return $this->appointment->status === 'cancelled';
}

类 EventServiceProvider

protected $listen = [
    NotificationSending::class => [
        NotificationSendingListener::class,
    ],
];

类 通知发送监听器

public function handle(NotificationSending $event)
{
    if (method_exists($event->notification, 'dontSend')) {
        return !$event->notification->dontSend($event->notifiable);
    }
    return true;
}

更多详情请看文章在 Laravel 中处理延迟通知 https://medium.com/@hotmeteor/handling-delayed-notifications-in-laravel-b6699ec30649

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 通知 - 延迟电子邮件发送并在满足条件时取消 的相关文章

  • 如何在 MySQL 中存储工作日列表?

    我正在使用编写一个应用程序PHP我需要存储一个独特的工作日列表MySQL 在应用程序中 我有一个数组来存储工作日 如下所示 days Wed Thu Sat 我知道我可以使用SET列 但我不想使用这种类型 因为它与我正在使用的框架 Lara
  • 如何使用 Laravel Scheduler 命令将输出重定向到 STDOUT?

    我的调度程序应用程序运行到 Docker 容器中 Laravel 调度程序由主管管理并执行到容器中 我通过以下方式管理输出重定向 http veithen github io 2015 01 08 supervisord redirecti
  • Laravel 5.5 中的主从配置

    如何配置 Laravel 5 5 主从 MySQL 复制 我想分别在master和slave上进行写操作和读操作 可选 有没有办法在理想条件下进行连接池和打开连接的最大 最小数量 只需改变你的config database php文件包含读
  • 在 Laravel 5.4 中选择下拉列表的选定值

    我有一个名为 名称 的下拉列表 用户将在其中选择其中一个 提交后 如果出现一些错误 那么我想选择所选的名称 我在 laravel 5 4 中使用它 控制器 info DB table designation gt where status
  • 使用composer create-project安装特定的laravel 5版本

    今天我尝试安装特定的 laravel 版本composer create project laravel laravel 5 1 8 your project name prefer dist 因为有些插件在5 1 9及以上版本有问题 但是
  • Laravel 中如何返回数组而不是集合?

    在 Laravel 中 可以仅选择一个字段并将其作为集合 数组返回 例如考虑模型Foo链接到表foos其中有字段id a b c 考虑以下示例数据 1 10 15 20 1 12 15 27 1 17 15 27 1 25 16 29 1
  • Laravel 验证:对 null 的成员函数调用失败()

    这段代码几天前还可以工作 但我似乎做了一些事情导致它崩溃 我有这条路线 Route post admin routemanagement AdminController addRoute 看起来像这样 public function add
  • Laravel 5.4 密码重置

    我有一个 Laravel 5 4 应用程序 我的管理区域中有一个视图 允许我查看所有用户 我想创建一个功能 允许我单击后端的按钮 自动发送默认 Laravel 密码重置功能的过程 在我看来 我有以下几点 table class table
  • Codeception API 测试响应返回“N/A”

    我正在使用 Laravel 和 Codeception 作为测试框架编写 API 我无法让 Codeception 返回响应代码 我可以从 Codeception 获取响应代码 以及 JSON 响应 我编写了一个简单的测试来从 GET 请求
  • 附加之前检查数据库中是否存在 ID

    我通过选择一个带有类别的数组json decode并将它们附加到文章中 public static function setArticleCategory Request request article Article where id r
  • Laravel 6:尚未设置外观根

    经过一段时间的努力 我已将我的网站从 Laravel 5 8 迁移到 Laravel 6作曲家更新我在网站上遇到此错误 并且仅使用命令PHP工匠 PHP Fatal error Uncaught RuntimeException A fac
  • 使用 Laravel Fluent 查询生成器从多个表中进行选择

    我正在重写一些 PHP MySQL 来与 Laravel 一起使用 我想做的一件事是使数据库查询更加简洁使用 Fluent 查询生成器 http laravel com docs database fluent但我有点迷失 SELECT p
  • 在 Laravel 中使用块或游标优化代码

    我有Company型号和Contact我的模型中定义的Laravel 5 4应用程序中 两者具有多对多的关系 因此 例如联系人模型具有 public function company return this gt belongsToMany
  • Laravel 转义 Blade 模板中的所有 HTML

    我正在 Laravel 中构建一个小型 CMS 并尝试显示内容 存储在数据库中 它显示 HTML 标签而不是执行它们 就像所有打印数据都有一个自动 html entity decode 一样
  • @apply 在 Laravel Mix 中的 Vue 组件内不起作用

    我在 Laravel 中使用 Tailwind CSS 和 VueJS 组件 如下所示
  • laravel cron 使用错误

    Laravel 错误 cron 使用 usr bin php home sitevk artisan 计划 运行 1 gt gt dev null 2 gt 1 应用 控制台 内核 use Illuminate Console Schedu
  • Laravel Homestead 中 npm 安装错误有解决方案吗?

    Windows 10 家园 虚拟盒6 0 8 流浪者2 2 5 节点 v12 5 0 npm v6 10 1 我想做的就是在新安装的 Laravel 应用程序中执行 npm install 命令 但我不断收到错误 经过两天的谷歌搜索并尝试了
  • laravel 5.3 新的 Auth::routes()

    最近开始使用laravel 5 3写博客 但是运行后出现一个问题php artisan make auth 当我运行这个时 它会在我的web php 这是其中的代码 Auth routes Route get home HomeContro
  • laravel中过滤后如何导出excel?

    我想仅导出视图刀片中过滤的数据 我正在使用 Laravel 7 和 maatwebsite excel 3 1 和 PHP 7 4 2 我浏览了文档并应用了这个 View a href class btn btn success i cla
  • Laravel 5.6 - 注册表无法正常工作并且不显示任何错误

    在我最近的一个项目中 定制登记表不管用 当我单击注册按钮时 它会重新加载注册表单 不会打印任何错误 并且不会将数据插入数据库中 这是注册表的外观 这里是移民文件代码 public function up Schema create user

随机推荐

  • 如果开关盒掉落,如何使 MSVC 发出警告或失败?

    如果我的 switch 语句之一有一个不会中断的情况 我希望收到警告 错误 这可能吗 switch i case 1 cout lt lt one forgot to break here I want to be warned about
  • .pem、.cer 和 .der 之间有什么区别?

    两者有什么区别 pem cer and der 据我所知 cer包含公钥 是否有任何开放框架可用于使用此公钥加密我的数据 pem cer and der都是可能包含 X 509 v3 证书的文件的文件扩展名 The der扩大 DER 是对
  • iPhone Flash 中的不同屏幕尺寸? (出现黑条)

    我是整个编码世界的新手 而 ActionScript 3 是我第一次真正的体验 如果我不能立即理解您的答案 很抱歉 我在 AIR for iOS 中使用 Adob e Flash CC 构建了一个 iPhone 应用程序 所有代码都位于时间
  • Angular 6:如何使用 Angular Material 隐藏无线电圆圈并使用 NgStyle 来检查答案?

    我在两件事上遇到了麻烦 隐藏 mat radio group 的圆圈 如果选中 请将 p 标签背景更改为蓝色 我尝试使用 ng deep 覆盖 css 属性并将颜色更改为白色 尝试配置 invisibility hidden 但没有成功 另
  • 导航属性“SenderId”不是类型“Conversation”上声明的属性

    当我尝试更新数据库时 出现以下错误 导航属性 SenderId 不是类型 Conversation 上声明的属性 验证它是否未从模型中显式排除并且它是有效的导航属性 Edit 我认为问题在于对话和用户之间的映射关系 因为对话和用户以两个一对
  • DTLS 和 TLS 之间的区别

    TLS 和 DTLS 之间的功能区别是什么 使用 TLS 与 DTLS 时应用程序流程 协商有何不同 基本上 DTLS 是在数据报 UDP DCCP 等 上构建 TLS DTLS 有意与 TLS 类似 只不过 DTLS 必须解决两个问题 数
  • (异步)NSURLConnection:下面发生了什么?

    我知道它必须处理启动线程来发出网络请求的丑陋 然后可能调用performSelectorOnMainThread 用我的委托方法 我知道怎么做use在进行 iOS 编程时 它效果很好 但是 我想知道如何使其在 例如 命令行实用程序的上下文中
  • 在keycloak登录页面显示应用程序名称

    我有两个应用程序App1 and App2与相互作用keycloak用于用户身份验证 我想在以下位置显示应用程序名称keycloak登录页面 例如 如果用户正在登录App1 the keycloak登录页面应显示 登录到 App1 同样的情
  • 如何在 Travis 中显示 HTML 格式的输出文件?

    我正在尝试使用 Travis CI 在 Bintray 上部署 Android 库 但是当我上传我的仓库时 我得到了这个 Ran lint 变体发布 发现 6 个问题 Ran lint on variant debug 6 issues f
  • 存储轮播图像的最佳方式是什么?

    我正在使用 Ruby on Rails 我的目标网页上有两个轮播 我想知道存储和显示这些图像的最佳方式是什么 选项一 将图像放入assets images并在轮播中显示它们 如果这是一种好方法 我可以循环浏览文件夹中的图像还是必须指定每个文
  • 我可以在 WinRT 应用程序中使用 Sqlite (javascript) 吗?

    是否可以在 Windows 8 winRT javascript 应用程序中使用 Sqlite 数据库 我想要实现的是下载一个 Sqlite 数据库并在使用前将其存储在本地存储中 我相信某种形式的本地存储可用于基于 javascript 的
  • 从头开始创建 geom / stat

    我不久前刚刚开始使用 R 目前正在努力加强我的可视化技能 我想做的是创建箱线图平均钻石作为顶部的一层 参见下面链接中的图片 我还没有找到任何可以执行此操作的函数 所以我想我必须自己创建它 我希望做的是创建一个几何或统计数据 让这样的事情能够
  • Azure 服务总线重试策略不会改变行为

    我试图了解 Azure 服务总线上的重试策略 但它没有按我预期的方式工作 我有以下代码 它既侦听消息又将消息发送到特定的天蓝色队列 using System using Microsoft ServiceBus using Microsof
  • 如何更改 C# 中 UWP 应用中按钮的背景颜色?

    我有一个简单的 我需要每秒改变按钮的颜色 我用这个代码btnBlue Background new SolidColorBrush Windows UI Colors Blue 但它不包含我在 xaml 中使用的自定义颜色 例如 FF30B
  • 带参数“-S -save-temps”的 gcc 将中间文件放入当前目录中

    参数 S save temps工作正常 只要我不在同名文件上使用它们 考虑以下情况 我有一个项目 有一个主目录和一个名为subDir并且在这两个目录中都放置了名为file c 如果我现在打电话gcc S save temps file cp
  • 如何锁定 iPhone 某些视图控制器的方向 - Swift?

    我有 2 个视图控制器 VC1 和 VC2 VC1 目前以模态方式呈现 VC2 VC1 仅方向应为纵向 但 VC2 可以具有所有方向 问题是当我在 VC2 中并且我旋转到横向模式然后关闭时 VC1 也处于横向模式 这绝对不应该发生 NOTE
  • 单元测试实体框架验证

    我使用 IValidatableObject 为某些实体框架对象编写了一些自定义验证 并向对象添加了一些 DataAnnotations 以进行验证 我想测试验证是否满足所需的验证 确保自定义验证正常工作 并且所做的任何更改都保留这些数据注
  • Ansible:如何初始化 git bare 存储库并将其克隆到同一台机器?

    我想问一下 如何使用 Ansible 来实现这样的情况 我的主要目标是 nit git bare 存储库并将其克隆到同一台计算机 var www 我通常的步骤是 1 git init bare 在 git project name 中运行
  • 模板特化与别名模板推导区别

    我很难理解在以下情况下演绎是如何工作的 template
  • Laravel 通知 - 延迟电子邮件发送并在满足条件时取消

    我有一个应用程序 我在其中发送推送通知 如果用户登录到该应用程序 那就没问题 但是 如果他们没有登录 如果他们在 X 分钟内没有阅读通知 我想向他们发送一封电子邮件 我的方法是使用 Laravel 通知来创建邮件 广播和数据库通知 上toM