Php Laravel-在运行时停止发送电子邮件

Php Laravel-在运行时停止发送电子邮件,php,laravel,email,Php,Laravel,Email,在我的Laravel 7.5应用程序中,每当创建记录时(通过模型事件触发),我都会发送一封电子邮件。在生产过程中使用邮枪驱动程序发送电子邮件 但是,有一个导入功能,当使用导入时,我不想发送数千封电子邮件。为了执行当前请求/脚本,在运行时暂停或禁用Laravel电子邮件的最佳方式是什么 我试过一些东西 将邮件驱动程序设置为log或array 在本地/dev(使用smtp驱动程序)上运行良好,但在生产环境中它并没有停止电子邮件 监听MessageSending事件并返回false以阻止电子邮件

在我的Laravel 7.5应用程序中,每当创建记录时(通过模型事件触发),我都会发送一封电子邮件。在生产过程中使用
邮枪
驱动程序发送电子邮件

但是,有一个导入功能,当使用导入时,我不想发送数千封电子邮件。为了执行当前请求/脚本,在运行时暂停或禁用Laravel电子邮件的最佳方式是什么

我试过一些东西

  • 将邮件驱动程序设置为
    log
    array
在本地/dev(使用smtp驱动程序)上运行良好,但在生产环境中它并没有停止电子邮件

  • 监听
    MessageSending
    事件并返回
    false
    以阻止电子邮件。同样,使用
    smtp
    驱动程序在本地运行良好,但使用
    mailgun
    驱动程序在生产中没有停止电子邮件
目前,我调用
Mail::fake()
以将邮件外观与fake进行交换。似乎工作正常,但感觉非常粗糙,可能无法处理不同的驱动程序和/或排队消息

是否有更好、更干净的方法暂时和全局暂停电子邮件发送?我不想停止发送事件,因为它们除了处理电子邮件外还进行其他处理


谢谢

我还没有测试过这个想法,但是您可以尝试在导入逻辑之前将变量闪存到会话中,例如:

session()->flash('import_disable_email',true);

// import logic here
在模型事件处理中,检查会话密钥是否存在,如下所示:

if(!session('import_disable_email')){ // or !== null
  // send email logic here
}
当然,如果要在保存逻辑后保持会话变量干净,可以使用以下命令删除该条目:

// import logic here

session()->forget('import_disable_email');

我还没有测试过这个想法,但您可以尝试在导入逻辑之前将变量闪存到会话中,例如:

session()->flash('import_disable_email',true);

// import logic here
在模型事件处理中,检查会话密钥是否存在,如下所示:

if(!session('import_disable_email')){ // or !== null
  // send email logic here
}
当然,如果要在保存逻辑后保持会话变量干净,可以使用以下命令删除该条目:

// import logic here

session()->forget('import_disable_email');

通过Eloquent发布批量更新或删除时,受影响的模型将不会触发
保存的
更新的
删除的
、和
删除的
模型事件


来源:

通过Eloquent发布大规模更新或删除时,受影响的模型将不会触发
保存的
更新的
删除的
删除的
模型事件


来源:

可能配置缓存在服务器上?可能配置缓存在服务器上?是的,我考虑过(一个会话或只是单个脚本的一个标志),但我正在寻找(如果可能的话)一个更干净的解决方案,我不必手动编辑每个侦听器:/hm。。我唯一能想到的另一件事是通过调用
config(['mail.to'=>$arrWithAddressAndName])
设置一个新的解决方案,虽然我也不会说这是一个干净的解决方案,因为电子邮件仍然会触发。我考虑过这一点(一个会话或只是单个脚本的一个标志),但我正在寻找(如果可能的话)对于一个更干净的解决方案,我不必手动编辑每个人,甚至是侦听器:/Hmm。。我唯一能想到的另一件事是通过调用
config(['mail.to'=>$arrWithAddressAndName])
来设置a,尽管如此,我也不会说这是一个干净的解决方案,因为电子邮件仍然触发正确,我一个接一个地创建模型,我确实需要
保存的
和其他触发的事件,因为它们执行导入所需的其他操作。但是,正确的是,我一个接一个地创建模型,我确实需要
保存的
和其他触发的事件,因为它们执行导入所需的其他操作。