Sengrid 尝试将邮件发送到空收件人,即使给出了“收件人”

问题描述 投票:0回答:2

我们通过 sendgrid/sendgrid php 包发送电子邮件。虽然直到上周在 Laravel 6 上这都运行良好,但似乎 Sengrid 不再接收通过

$email->addTo("[email protected]", "Foo Bar");
添加的收件人。上周我们将 vom laravel6 升级到了 laravel8,但我怀疑这是否真的相关。

        $email = new Mail();

        $email->setTemplateId('myTemplateId');
        $email->setFrom('[email protected]', 'Contact Form');
        $email->addTo('[email protected]', "Foo Bar");

        $email->addBcc('[email protected]', 'Blabla');
        $email->setReplyTo($request->email, $request->name);

        $email->setSubject("ZMy Subject");

        $email->addDynamicTemplateDatas([
            'name' => $request->name,
            'email' => $request->email,
            'subject' => $request->subject,
            'message' => $request->message,
            'company' => $company->company_name,
            'subscribe' => $request->subscribe ? 'ja' : 'nein'
        ]);

        //dd($email);

        $sendgrid = new SendGrid(getenv('SENDGRID_API_KEY'));

        try {
            $response = $sendgrid->send($email);
            if ($response->statusCode() != "202") {
                throw new \Exception('Email exception: ' . $response->body());
            }
            $emailSent = true;
        } catch (Throwable $e) {
            throw new \Exception('Email exception: ' . $e->getMessage());
            $emailSent = false;
        }

$email
变量的内容确实看起来像这样:

API 调用确实返回状态 202,因此一切看起来都很好。但是,sendgrid bakcend 中的活动源不包含任何收件人 - 并且邮件未发送。

有什么想法为什么会发生这种情况吗?或者有人有同样经历吗

版本: “发送网格/发送网格”:“7.8.3”

“laravel/框架”:“^8.0”

php laravel email sendgrid laravel-8
2个回答
2
投票

我发现上述行为的原因是模板中的车把代码损坏。上面的 php 代码本身是正确的。

我个人觉得令人困惑的是,API 接受发送带有损坏模板的电子邮件的请求并返回 202,并且实际上尝试将其发送给空收件人。 Sendgrid 的价格也很昂贵。我建议 Sendgrid 验证模板并阻止发送带有损坏电子邮件的电子邮件的尝试,而不是将带有损坏模板的电子邮件添加到肯定会失败的发送队列中,并返回错误代码。


0
投票

如果模板本身没问题,但你传入的ID不正确,也会出现这种情况!就我而言,我为来自不同 SendGrid 帐户的模板传递动态模板 ID。 API 调用返回 202 Accepted,但电子邮件的显示方式与控制台中的屏幕截图相同。

© www.soinside.com 2019 - 2024. All rights reserved.