安装了mailgun的laravel

时间:2019-08-01 11:35:48

标签: laravel laravel-5 mailgun

我读了所有我能读的 并且看起来像我根据文档(和互联网)设置并填写的地方,但仍然无法收到任何电子邮件。

我需要使用MailGun API,以便可以从本地主机以及测试和产品+发送电子邮件,因为通常25个端口都关闭了。

我已尽一切可能以防万一发生奇迹(在.env中的smtp / mailgun之间进行了更改)

我已经尝试了真实的服务器设置,并且在失败时也尝试了没有成功的沙箱。

我的mailgun数据访问权限(某些字母隐藏了):

  1. 我的mailgun沙箱服务器 http://i.imgur.com/XCi8Hkn.png

  2. 当我单击它时,我可以选择在API和SMTP之间进行选择
    API标签中的2.1我有API密钥:http://i.imgur.com/xGSq7aF.png
    2.2在SMTP框中,我有smtp主机,端口,登录名,密码:http://i.imgur.com/t5Pi6lH.png

  3. 我的.env
MAIL_DRIVER=mailgun

MAILGUN_DOMAIN=sandbox8ffe89553e224c468f4ad0cf6b4da3c2.mailgun.org
MAILGUN_SECRET=b3ff30bxxxxxxxxxxxxxxxx087d-f877bd7a-01ecceaa

互联网上的某个地方发现MAILGUN_DOMAIN和MAILGUN_SECRET  可以添加到.env中,因此也可以在这里尝试

  1. config/mail.php
    'driver' => env('MAIL_DRIVER', 'mailgun'),
  1. app/mail/Test.php
    public function build()
    {
        return $this->from('support@sandbox8ffe89553e224c468f4ad0cf6b4da3c2.mailgun.org')
                    ->subject('HELLO')
                    ->view('test');
    }
  1. 沙箱“至”电子邮件已验证http://i.imgur.com/tDhgLcT.png

  2. TestController

use App\Mail\Test;
use Illuminate\Support\Facades\Mail;

class TestController extends Controller
{
    public function test()
    {
        echo 'hello';

        try {
            Mail::to('myaddress@gmail.com')->send(new Test());
        } catch  (\Exception $e) {
            dump($e);
        }

        echo 'hello2';

    }
}

  1. resources/views/test.blade.php
hello
  1. 使用这种情况只是为了以防万一
> artisan cache:clear
> artisan config:cache
> artisan cache:clear

9

请帮助,缺少什么?我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要使用ENV设置的名称。以您的情况为例,您的用户名试图获取一个名为'postmaster@sandbox8ffexxxxxxxxxxd0cf6b4da3c2.mailgun.org'的环境变量,当然不存在。

'driver' => env('MAIL_DRIVER', 'mailgun'),
'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
'port' => env('MAIL_PORT', 587),
'from' => [
    'address' => env('SUPPORT', 'hello@example.com'), //if SUPPORT env does not exist, default to hello@example.com
    'name' => env('NAME', 'Example'),
],
'username' => env('MAIL_USERNAME'),

'password' => env('PASSWORD'),

使用 env 时的第一个参数,即ENV_NAME是您在.env文件中设置的名称,第二(可选)参数是未找到第一个值时默认使用的值。

答案 1 :(得分:1)

_HOST_PORT_USERNAME_PASSWORD_ENCRYPTION环境变量仅适用于 SMTP。

为此,您的MAIL_DRIVER应该设置为 SMTP ,其中我刚才提到的5个值指向您的mailgun值。

_DOMAIN_SECRET仅适用于设置了MAIL_DRIVER=mailgun(表示mailgun api)并且表示不使用SMTP 的情况。驱动程序了。

基本上,您可以选择:选择SMTP并将其指向mailgun(设置MAIL_DRIVER=smtp,或mailgun API(设置MAIL_DRIVER=mailgun)。

我认为,如果您仔细考虑直到理解了两者之间的区别,那么您应该可以解决它。

此外,在沙盒域上,除非将收件人地址添加为经过验证的电子邮件,否则您将无法发送真实的电子邮件。您可以在mailgun仪表板上执行此操作。这可能就是造成此问题的原因(毕竟这是一个沙箱-出于安全考虑,因此您不会通过特定地址的电子邮件验证意外发送到未明确选择使用的实时电子邮件地址)

另一个技巧,进入修补程序并键入config('mail'),您将看到框架吸收了什么。然后,如果您看到要放置的值肯定在那里,则不必调整实际的配置文件。

我也刚刚注意到您上面列出的配置文件是错误的。您有'driver' => env('mailgun', 'mailgun'),无效(因为您将在修补程序中查看是否执行config('mail'))。 env()函数采用环境变量的名称(例如MAILGUN_DOMAIN或MAILGUN_SECRET作为其第一参数,如果该名称的shell环境变量不存在,则第二参数是默认值)。