【问题标题】:Send Mail Using Lumen使用 Lumen 发送邮件
【发布时间】:2019-07-14 23:24:37
【问题描述】:

Mail.php

return [
 'driver' =>'smtp',
 'host' => 'smtp.gmail.com',
 //'port' => 587,
 'port' =>465,
 //'encryption' =>'tls',
 'encryption' =>'ssl',
 'username' => 'xxxxxxxx@gmail.com',
 'password' => 'xxxxxxx',
 // 'sendmail' => '/usr/sbin/sendmail -bs',
 'sendmail' => '/usr/sbin/sendmail -t',
 'markdown' => [
        'theme' => 'default',
        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
];

控制器

$data = []; // Empty array

        Mail::send('email.credentials', $data, function($message)
        {
            $message->to('xxxxxx@gmail.com', 'Jon Doe')->subject('Welcome!');
        });

错误

Swift_TransportException 无法与主机建立连接 smtp.gmail.com [连接尝试失败,因为已连接 当事人在一段时间后没有正确回应,或建立 连接失败,因为连接的主机没有响应。

我试过了……

  • 更改 ssl/tls

  • 更改端口

  • 在composer.json中添加"guzzlehttp/guzzle": "~5.3|~6.0"

  • 在 StreamBuffer.php 中添加新行

    $options = array_merge($options, array('ssl' => array('verify_peer' => false,'verify_peer_name' => false,'allow_self_signed' => true )));

请帮忙。

谢谢。

【问题讨论】:

    标签: laravel email smtp lumen


    【解决方案1】:

    1.需要照明/邮寄

    确保您使用与底层框架相同的版本(即,如果您使用的是 Lumen v. 5.3,请使用 composer require illuminate/mail "5.3.*")。

    composer require illuminate/mail "5.5.*"
    

    2。设置流明bootstrap/app.php

    首先,打开您的bootstrap.php 并取消注释以下行:

    $app->withFacades();
    $app->register(App\Providers\AppServiceProvider::class);
    

    另外,在您取消注释的最后一行下方添加以下行:

    $app->configure('services');
    

    这将允许您定义一个“服务”配置文件并设置您的邮件服务。现在我知道通常配置是使用 Lumen 在 .env 文件中完成的,我们很快就会使用它,但首先我们需要编写一个小配置文件来映射到 .env 文件。

    3.创建配置文件

    在安装的根目录创建一个名为 config 的新文件夹(如果它不存在)。在config文件夹中,新建两个文件,一个叫services.php,另一个叫**mail.php**.

    services.php 文件中粘贴以下内容:

    <?php
    return [
        'mailgun' => [
            'domain' => env('MAILGUN_DOMAIN'),
            'secret' => env('MAILGUN_SECRET'),
        ],
    ];
    

    最后,将以下内容添加到您的 .env 文件中:

    MAIL_DRIVER=mailgun
    MAILGUN_DOMAIN=<your-mailgun-domain>
    MAILGUN_SECRET=<your-mailgun-api-key>
    

    确保将那些偷偷摸摸的占位符替换为您的实际密钥和域。如果您不使用 Mailgun,您可以随时使用 Mail 附带的其他邮件提供商;如果您打算使用其他提供商,请查看文档,一旦您在这一点上,它们都很容易设置。

    4.发送电子邮件!

    要发送电子邮件,请在您的课程中使用以下选项之一(取决于您的偏好):

    use Illuminate\Support\Facades\Mail;
    
        $data = []; // Empty array
    
        Mail::send('email.credentials', $data, function($message)
        {
            $message->to('xxxxxx@gmail.com', 'Jon Doe')->subject('Welcome!');
        });
    

    最后,别忘了阅读 Laravel Mail docs 以获取有关如何使用这个出色库的更多信息。

    【讨论】:

    • 我试过了,但它不起作用,我的公司网络使用代理有什么问题......?
    【解决方案2】:

    您是否打开了用于发送电子邮件的Google account(您在.env 文件中配置的电子邮件地址)中的2 layers security

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 2017-04-05
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 2020-02-24
      • 2021-02-08
      • 1970-01-01
      • 2017-10-22
      相关资源
      最近更新 更多