【问题标题】:Laravel - No emails sending using mailgunLaravel - 没有使用 mailgun 发送电子邮件
【发布时间】:2019-10-18 10:04:11
【问题描述】:

服务器:数字海洋

Ubuntu 16.04

Laravel 5.8

我无法使用 mailgun.com 从 laravel 发送电子邮件

在 Digital Ocean 中,我在防火墙上打开了所有传出端口,我在 Digital Ocean 中为 TXT 和 MX 记录设置了正确的 DNS 设置。我的域名注册器上有正确且经过验证的 DNS 记录,并且 mailgun 的所有记录都带有绿色复选标记

配置/mail.php

return [
'driver' => 'mailgun',
'host' => 'smtp.mailgun.org',
'port' => 587,
'from' => [
    'address' => 'orders@domain.com',
    'name' => 'Company Name'
],
'encryption' => 'tls'),
'username' => 'orders@mg.domain.com',
'password' => 'xxxxd663hd02j727bb2eefd1ea38bbe0-58bc211a-670xxxx'
];

config/services.php

'mailgun' => [
    'domain' => 'https://api.mailgun.net/v3/mg.domain.com',
    'secret' => 'xxxxehbe8v25g3374e5as3ff32a45995-39bc661a-4716xxxx',
],

控制器

use Illuminate\Support\Facades\Mail;

$data = [
        'email' => 'email@yahoo.com',
        'name' => 'Bob Smith'
    ];

    $body_data = [
        'id' => '1234'
    ];

    Mail::send('emails.shipped', $body_data, function($message) use ($data)
{
    $message->to($data['email'], $data['name'])->subject('Test Email');
});

当我将邮件驱动程序更改为日志然后检查日志文件时,它看起来很棒。一切看起来都很完美,我之前在 Laravel 5.5 上使用过 mailgun,没有任何问题。 我也尝试了新的 laravel 构建方法和同样的问题。

我没有收到任何错误,我检查了 apache2 上的日志,mailgun 中没有出现日志,当然收件箱或垃圾邮件中也没有电子邮件。

我的问题是,我错过了什么吗?我还能做哪些其他故障排除?好像我的应用程序没有正确连接到 mailgun。

【问题讨论】:

  • Laravel 日志是怎么说的?此外,在您的配置中,'encryption' 行的末尾似乎有错字。
  • @HCK 啊我看到错字了。那只是复制/粘贴并在此处发布
  • @HCK 在 laravel.log 中没有任何内容我只是将驱动程序切换到“日志”,并且电子邮件内容/标题按预期出现

标签: php laravel mailgun laravel-5.8


【解决方案1】:

我认为在您的config/services.php 中,mailgun.domain 应该更像 mg.domain.com(或 sandboxXXXXXXX.mailgun.org,如果那是开发环境),而不是您设置的网址。

【讨论】:

    【解决方案2】:

    试着放:

    'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), 
    

    在您的 mailgun 数组中。

    【讨论】:

      【解决方案3】:

      我使用的是 laravel 5.8,它使用所有默认配置

      .env

      MAIL_DRIVER=mailgun
      MAILGUN_DOMAIN=sandbox8a408833ad1540e7b3a5d0151f606531.mailgun.org
      MAILGUN_SECRET=92df7e85eeeaccaeae3d3b3164600666-87cdd773-8c819599
      

      web.php

      Route::get('send_test_email', function(){
          Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message)
          {
              $message->to('your_test_email@gmail.com');
          });
      });
      

      services.php

      'mailgun' => [
          'domain' => env('MAILGUN_DOMAIN'),
          'secret' => env('MAILGUN_SECRET'),
      ],
      

      【讨论】:

        【解决方案4】:

        我一整天都在为同样的问题(laravel + mailgun)苦苦挣扎。

        这最终解决了我的问题。希望这会有所帮助!

        MAIL_DRIVER=mailgun
        MAILGUN_DOMAIN=mail.mydomain.com
        MAILGUN_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxx
        MAIL_FROM_ADDRESS=kp@mydomain.com
        MAIL_FROM_NAME='KP'
        

        在路由/web.php 中:

        Route::get('/tst', function(){
            Mail::raw('Sending emails with Mailgun and Laravel is easy!', function($message)
            {
                $message->to('kp@yahoo.com', 'K P')->subject('Hello there, how are you?');
            });
            echo "string";
        });
        
        

        注意:您需要确保您的 MAILGUN_DOMAIN 已设置并且 MX / DNS 记录存在于您的服务器/域中。这可能需要长达 24 小时才能传播(遗憾的是,这是最烦人的部分)。但这些都是您需要的设置。

        【讨论】:

          【解决方案5】:

          您可以尝试在您的服务器中安装 SwiftMailer 库。

          sudo apt install -y php-swiftmailer
          

          【讨论】:

            猜你喜欢
            • 2017-10-12
            • 1970-01-01
            • 2014-04-14
            • 2021-01-01
            • 2016-04-24
            • 2017-07-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多