php - 覆盖 Laravel Mailer 的 setGlobalTo

标签 php laravel sendgrid mailer

我在开发环境中从 Laravel 向 SendGrid API 发送邮件时遇到问题。

问题是,我在 mail.php 配置文件上设置了一个全局 TO,以便发送的所有电子邮件都转到该地址。

但是 Mailer 类的 setGlobalTo() 函数实际上将相同的电子邮件设置为 TO、CC 和 BCC。

端点上的 SendGrid 不接受重复的电子邮件,因此会引发错误

如果我评论设置抄送和密件抄送的两行,它就会得到修复:

protected function setGlobalTo($message){
    $message->to($this->to['address'], $this->to['name'], true);
    //$message->cc($this->to['address'], $this->to['name'], true);
    //$message->bcc($this->to['address'], $this->to['name'], true);
}

但它是一个供应商文件,所以问题是......

在开发环境中发送电子邮件之前,如何轻松覆盖该方法或取消设置抄送和密件抄送?

谢谢!

最佳答案

我解决了它监听 Illuminate\Mail\Events\MessageSending 事件(该事件在实际发送邮件之前引发)并取消设置 CC 和 BCC(如果设置了 globalTo 地址)

namespace App\Listeners;

use Illuminate\Mail\Events\MessageSending;
use Illuminate\Support\Facades\Config;

class MessageSendingListener {

    public function handle(MessageSending $swiftMessage) {
        $globalTo = Config::get('mail.to.address');
        if (isSet($globalTo)) {
            $swiftMessage->message->setBcc([]);
            $swiftMessage->message->setCc([]);
        }
    }
}

关于php - 覆盖 Laravel Mailer 的 setGlobalTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859404/

相关文章:

php - 图片上传插件(php jquery flash)

php - 如何在任何 URL(访问/页面加载)中显示 "daily hits"?

php - 迁移不要把 "unique"放在我的 table 上

mysql - 如何通过多标签选择产品

node.js - 使用 SendGrid 发送的电子邮件内容中的随机空格

node.js - 为什么此代码会发送重复的电子邮件?

javascript - 透明背景PNG用于上传功能

php - 从传入的 url 在 php 或 htaccess 中重定向

php - 禁用 Laravel 电子邮件 - BeautyMail

python - 如何使用 Django 的 Parse API 解析来自 Sendgrid 的消息?