404 не найден домен mailgun на laravel - PullRequest
1 голос
/ 30 сентября 2019

Я на самом деле борюсь с почтовым оружием на laravel, я на laravel 6, я настроил аутентификацию и пытаюсь заставить работать функцию сброса пароля. Поэтому я решил использовать mailgun в качестве почтового сервера,

вот мой файл .env:

APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:************
APP_DEBUG=true
APP_URL=http://localhost

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=******
DB_USERNAME=******
DB_PASSWORD=******

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@parisworld.ovh
MAIL_PASSWORD=*******
MAIL_ENCRYPTION=tls

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

mail.php:

<?php

return [
   'driver' => env('MAIL_DRIVER', 'mailgun'),
   'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
   'port' => env('MAIL_PORT', 587),
   'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'support@parisworld.ovh'),
        'name' => env('MAIL_FROM_NAME', 'Parisworld support'),
    ],
   'encryption' => env('MAIL_ENCRYPTION', 'tls'),
   'username' => env('MAIL_USERNAME'),
   'password' => env('MAIL_PASSWORD'),
   'sendmail' => '/usr/sbin/sendmail -bs',
   'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
   'log_channel' => env('MAIL_LOG_CHANNEL'),
]

И мои services.php:

<?php

   return [
    'mailgun' => [
        'domain' => env('MAILGUN_DOMAIN', 'parisworld.ovh'),
        'secret' => env('MAILGUN_SECRET', '********'),
    ],

    'postmark' => [
        'token' => env('POSTMARK_TOKEN'),
    ],

    'ses' => [
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    ],

];

Я не понимаю, чего на самом деле мне не хватает, я настроил домен mailgun и проверил dns, все нормально на стороне mailgun, я даже мог отправить себе письмо, используя метод curlно когда я пытаюсь сбросить пароль из своего приложения, я получаю эту ошибку:

Client error: `POST https://api.mailgun.net/v3/parisworld.ovh/messages.mime` resulted in a `404 NOT FOUND` response: { "message": "Domain not found: parisworld.ovh" } 

Надеюсь, этот пост понятен, любая идея приветствуется:)

1 Ответ

1 голос
/ 01 октября 2019

Ну, я нашел решение этой проблемы, я создал свою учетную запись в ЕС, по умолчанию, когда вы ссылаетесь на адрес api mailgun, smtp.maigun.org соответствует API США. Поэтому laravel искала домен parisworld.ovh в API США, пока он был зарегистрирован в ЕС. Для работы с eu api от mailgun вы должны изменить в .env (в моем случае):

MAIL_HOST=smtp.mailgun.org

на

MAIL_HOST=smtp.eu.mailgun.org

Я не знаю почему, но у меня все еще была аутентификацияпроблема:

enter image description here

Чтобы решить эту проблему, мне просто нужно было сбросить пароль smtp из интерфейса mailgun, вставить новый пароль в мой .env исейчас работает! Надеюсь, этот пост поможет некоторым:)

...