我在laravel应用程序中使用mailgun驱动程序并尝试发送邮件。但它给了我这个错误
Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required
配置/ mail.php
'driver' => env('mailgun', 'smtp'),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'arshaikh_17@hotmail.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
.ENV
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
services.php
'mailgun' => [
'domain' => env('mydomain.com.pk'),
'secret' => env('key-********************'),
],
我的设置有什么问题,还有什么需要检查吗?请帮助我过去2天一直在尝试学习laracast,但它没有发送邮件。
答案 0 :(得分:1)
你的配置搞砸了。这部分在mail.php
:
'driver' => env('mailgun', 'smtp'),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'arshaikh_17@hotmail.com'),
'name' => env('MAIL_FROM_NAME', 'Example'),
],
应该保持最初的方式。
然后,更改项目根目录中.env
文件中的配置。因此,如果您在mail.php
中有以下行:
'driver' => env('MAIL_DRIVER', 'smtp'),
然后在.env
文件中,您可以将属性MAIL_DRIVER
的值更改为mailgun
。
在laravel 5.4中,.env
文件的邮件部分如下所示:
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=postmaster@somelongstring.mailgun.org
MAIL_PASSWORD=verysecretstring
MAIL_ENCRYPTION=tls
MAILGUN_DOMAIN=somelongstring.mailgun.org
MAILGUN_SECRET=key-somelongstring
我没有更改config
目录中的任何内容。如果您登录mailgun,您可以在域下找到所有这些变量的值。
另外,请阅读文档https://laravel.com/docs/5.3/mail或尝试查找有关使用laravel设置mailgun的教程。
答案 1 :(得分:1)
您应该了解如何使用documentation:
中所述的环境配置使用env()
函数时,第一个参数应该是.env
文件中定义的变量名称,而第二个参数是默认值。
因此,在您的config/mail.php
和services.php
中,您应该引用您在env()
文件中定义的变量,如下所示:
配置/ mail.php
'driver' => env('MAIL_DRIVER', 'smtp'),
'from' => [
'address' => env('MAIL_FROM_ADDRESS'),
'name' => env('MAIL_FROM_NAME'),
],
services.php
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
.ENV
MAIL_DRIVER=mailgun
MAIL_FROM_ADDRESS=arshaikh_17@hotmail.com
MAIL_FROM_NAME=Example
MAILGUN_DOMAIN=mydomain.com.pk
MAILGUN_SECRET=key-********************
请注意,我经常不会为您的MAIL_FROM_ADDRESS
指定默认值,因为这主要因安装而异。此外,您永远不应将像MAILGUN_SECRET
这样的API密钥存储在诸如services.php之类的文件中,这些文件通常是受版本控制的。
答案 2 :(得分:0)
使用他们的lib
安装:
php composer.phar require mailgun/mailgun-php php-http/guzzle6-adapter php-http/message
包括:
require 'vendor/autoload.php';
use Mailgun\Mailgun;
新对象:
$mgClient = new Mailgun('YOUR_API_KEY');
参见示例 https://documentation.mailgun.com/api-sending.html#examples