【问题标题】:cannot send mail using mailgun无法使用 mailgun 发送邮件
【发布时间】:2017-09-28 16:28:45
【问题描述】:

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

【问题讨论】:

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


    【解决方案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】:

      你的配置全乱了。这部分在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 的教程。

      【讨论】:

        【解决方案3】:

        使用他们的库

        安装:

        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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-20
          • 1970-01-01
          • 2016-04-24
          • 1970-01-01
          • 2017-04-30
          • 1970-01-01
          相关资源
          最近更新 更多