Laravel - Никаких писем, отправляемых с помощью mailgun - PullRequest
7 голосов
/ 02 июня 2019

Сервер: Digital Ocean

Ubuntu 16.04

Laravel 5.8

Я не могу получить электронное письмо для отправки из laravel с помощью mailgun.com

В цифровомOcean У меня все исходящие порты открыты на брандмауэре, у меня правильные настройки DNS в Digital Ocean для записей TXT и MX.У меня есть правильные и проверенные записи DNS на моем домене registar, и у 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');
});

Когда я меняю почтовый драйвер на журнал, а затем проверяю файл журнала, он выглядит великолепно.Все выглядит отлично, и я раньше пользовался mailgun на Laravel 5.5 без проблем.Я также попробовал новый метод сборки Laravel и ту же проблему.

Я не получаю ошибок, я проверил логи на apache2, логи не появляются в почтовом ящике и, конечно же, никакие электронные письма не приходят во входящие или спам.

Мой вопрос: я что-то упустил?Какие еще способы устранения неполадок я могу сделать?Похоже, мое приложение неправильно подключается к почтовому оружию.

Ответы [ 4 ]

7 голосов
/ 05 июня 2019

Я думаю, что в вашем config/services.php mailgun.domain должен быть больше похож на mg.domain.com (или sandboxXXXXXXX.mailgun.org, если это среда разработки), а не на URL, подобный тому, который вы установили.

0 голосов
/ 11 июня 2019

Я боролся с этой самой проблемой (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 часов для распространения (к сожалению, самая раздражающая часть). Но это все настройки, которые вам понадобятся.

0 голосов
/ 05 июня 2019

Я использую 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'),
],
0 голосов
/ 05 июня 2019

Попробуйте поставить:

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

в вашем массиве mailgun.

...