无法使用mailgun发送邮件

时间:2017-05-01 07:56:51

标签: php laravel laravel-5 laravel-5.3 mailgun

我在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,但它没有发送邮件。

3 个答案:

答案 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.phpservices.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