Laravel-没有使用mailgun发送的电子邮件

时间:2019-06-02 17:31:21

标签: php laravel mailgun laravel-5.8

服务器:数字海洋

Ubuntu 16.04

Laravel 5.8

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

在Digital Ocean中,我在防火墙上打开了所有传出端口,在Digital Ocean中,我具有用于TXT和MX记录的正确DNS设置。我在域名registar上拥有正确且经过验证的DNS记录,并且mailgun的所有内容上都带有绿色的选中标记

config / 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。

5 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:0)

尝试放置:

int

在您的long数组中。

答案 2 :(得分:0)

我正在使用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'),
],

答案 3 :(得分:0)

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

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

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

在routes / 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个小时(最令人讨厌的部分)。但这就是您需要的所有设置。

答案 4 :(得分:0)

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

sudo apt install -y php-swiftmailer