Nic*_*las 5 authentication laravel mailgun
我实际上在 Laravel 上与 mailgun 苦苦挣扎,我在 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}"
Run Code Online (Sandbox Code Playgroud)
邮件.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'),
]
Run Code Online (Sandbox Code Playgroud)
还有我的 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'),
],
];
Run Code Online (Sandbox Code Playgroud)
我不明白我实际上缺少什么,我配置了 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" }
Run Code Online (Sandbox Code Playgroud)
我希望这篇文章足够清楚,欢迎任何想法:)
好吧,我找到了这个问题的解决方案,我在欧盟创建了我的帐户,默认情况下,当您引用mailgun api url时,smtp.maigun.org对应于美国api。因此,laravel 在美国 api 中寻找域名 parisworld.ovh,而该域名是在欧盟注册的。要使用 mailgun 的 eu api,您必须更改 .env (在我的例子中):
MAIL_HOST=smtp.mailgun.org
Run Code Online (Sandbox Code Playgroud)
到
MAIL_HOST=smtp.eu.mailgun.org
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,但我仍然遇到身份验证问题:
为了解决这个问题,我只需从 mailgun 界面重置我的 smtp 密码,将新密码粘贴到我的 .env 中,它现在就可以工作了!希望这篇文章能对一些人有所帮助:)
归档时间: |
|
查看次数: |
1250 次 |
最近记录: |