【问题标题】:Lumen 5.3 send emailLumen 5.3 发送邮件
【发布时间】:2017-04-05 07:44:24
【问题描述】:

我尝试使用 gmail smtp 配置从 Lumen 发送电子邮件。我正在使用:

  • illuminate/mail,版本5.3
  • lumen,版本5.3

我无法发送电子邮件。

我的路由器:

$app->get('/', function () use ($app) {
    $app->get('mail','mailcontroller@mail');
});

我的AppServiceProvider.php

namespace App\Providers;
use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider {

    public function register() {
    $this->app->singleton('mailer', function ($app) {
        $app->configure('services');
        return $app->loadComponent('mail', 'Illuminate\Mail\MailServiceProvider', 'mailer');
        });
    }
}

我的.env 配置:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=*******@gmail.com
MAIL_PASSWORD=*********
MAIL_ENCRYPTION=tls

我的邮件控制器:

<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Mail;

class mailcontroller extends Controller {
    public function mail(){
        Mail::raw('Raw string email', function($msg) { 
            $msg->to(['****.com']); 
            $msg->from(['*****@gmail.com']); });
    }
}

我还在app.php 中启用了以下行:

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

【问题讨论】:

    标签: laravel phpmailer lumen


    【解决方案1】:

    聚会有点晚了,但这是我在 Lumen 5.4 中的做法(我知道这可能有点笨拙,并不适合所有人,但仍然):

    1)拉入illuminate/mail

    composer require illuminate/mail

    2)将服务提供商添加到您的bootstrap/app.php

    $app-&gt;register(\Illuminate\Mail\MailServiceProvider::class); 并取消注释 $app-&gt;withFacades();

    有可能/很可能通过.env实现以下目标,但我没有尝试过:

    3) 安装 phanan 的级联配置 - https://github.com/phanan/cascading-config 并按照那里描述的 Lumen 安装过程进行操作

    4) 在应用程序的根目录中创建 config 文件夹并复制粘贴完整的 Laravel 的 config/mail.php

    5)$app-&gt;configure('mail'); 添加到bootstrap/app.php

    6)确保mail.php中的实际配置正确

    现在您应该能够像在完整的 Laravel 安装中一样发送邮件了。

    【讨论】:

    • 如果有人正在努力通过 typehinting 解决 Mailer,我必须在应用启动后添加 $this-&gt;app-&gt;alias('mailer','Illuminate\Mail\Mailer');(我在 AppServiceProvider 的 register 方法中添加了它)
    • 如果有人在安装illuminate/mail 时遇到问题(版本问题),请执行composer show --installed | grep illuminate 并注意版本。然后运行composer require illuminate/mail:~version.number。在那之后,我能够按照你的步骤@GTCrais。谢谢老兄。
    • 当我尝试发送邮件时遇到问题。 FatalThrowableError 找不到类“Illuminate\Mail\MailServiceProvider”
    【解决方案2】:

    如果安装的是php 7.1,请使用Mail 5.7版本

    composer require illuminate/mail 5.7.*
    

    【讨论】:

      猜你喜欢
      • 2019-07-14
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2022-01-21
      • 2017-04-02
      • 2020-02-24
      • 1970-01-01
      相关资源
      最近更新 更多