我设置了mailgun帐户,并试图使用沙箱域来测试使用API而不是smtp发送电子邮件。这就是我的Laravel.env
文件设置的方式
MAIL_MAILER=mailgun
MAILGUN_DOMAIN=sandboxxxxxxx.mailgun.org
MAILGUN_SECRET=xxxxxxxxx
MAILGUN_ENDPOINT=api.mailgun.net/v3/<mailgun-domain>
然后我在我的控制器中使用这个来发送电子邮件。
$emailToSendTo = Page::where('name', 'contact')->first()->email;
Mail::to($emailToSendTo)->send(new ContactSent($request));
当我查看mailgun仪表板时,我的电子邮件没有被发送。我也没有收到任何错误消息。此外,我知道mailgun将您可以在沙盒域中发送的电子邮件限制为您在mailgun中设置的内容。$emailToSendTo
是一封经过验证的电子邮件。
ContactSent
类已通过刀片视图进行了良好设置。
我要回答我自己的问题,这样可以帮助别人。
我把它放在vendor/laravel/src/Illuminate/Mail/Transport/MailgunTransport.php
和方法send()
:中
dd($this->endpoint);
然后我尝试调用发送邮件的方法。我注意到MAILGUN_ENDPOINT
没有正确设置,因此dd($this->endpoint)
向我显示了错误的端点。
应该是:
MAILGUN_ENDPOINT=api.mailgun.net
这解决了我的问题。我希望这将有助于调试。此外,我真的认为环境变量应该命名为MAILGUN_BASE_URL
,因为它混淆了我的想法