Lumen 5.4 与 Laravel 可邮寄

Posted

技术标签:

【中文标题】Lumen 5.4 与 Laravel 可邮寄【英文标题】:Lumen 5.4 with Laravel Mailable 【发布时间】:2018-03-16 11:22:10 【问题描述】:

天真的问题:有没有办法使用 Artisan 在 Lumen 框架中创建 Mailable 类,如下所示:php artisan make:mail OrderShipped(示例取自文档)。

这里是 composer.json


"name": "laravel/lumen",
"description": "The Laravel Lumen Framework.",
"keywords": ["framework", "laravel", "lumen"],
"license": "MIT",
"type": "project",
"require": 
    "php": ">=5.6.4",
    "laravel/lumen-framework": "5.4.*",
    "vlucas/phpdotenv": "~2.2",
    "firebase/php-jwt": "^4.0",
    "guzzlehttp/guzzle": "^6.3",
    "illuminate/mail": "5.4",
    "phanan/cascading-config": "~2.0"
,
"require-dev": 
    "fzaninotto/faker": "~1.4",
    "phpunit/phpunit": "~5.0",
    "mockery/mockery": "~0.9"
,
"autoload": 
    "psr-4": 
        "App\\": "app/"
    
,
"autoload-dev": 
    "classmap": [
        "tests/",
        "database/"
    ]
,
"scripts": 
    "post-root-package-install": [
        "php -r \"copy('.env.example', '.env');\""
    ]
,
"minimum-stability": "dev",
"prefer-stable": true

这就是 bootstrap/app.php 的修改方式(添加了所有这些):

$app->withFacades( true, [
  'Illuminate\Support\Facades\Mail' => 'Mail',
]);

$app->register(\Illuminate\Mail\MailServiceProvider::class);
$app->configure('mail');
$app->alias('mailer','Illuminate\Mail\Mailer');
config('mail');

这就是php artisan 给我的:

Laravel Framework Lumen (5.4.7) (Laravel Components 5.4.*)

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
      --env[=ENV]       The environment the command should run under
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  help                Displays help for a command
  list                Lists commands
  migrate             Run the database migrations
 auth
  auth:clear-resets   Flush expired password reset tokens
 cache
  cache:clear         Flush the application cache
  cache:forget        Remove an item from the cache
  cache:table         Create a migration for the cache database table
 db
  db:seed             Seed the database with records
 make
  make:migration      Create a new migration file
  make:seeder         Create a new seeder class
 migrate
  migrate:install     Create the migration repository
  migrate:refresh     Reset and re-run all migrations
  migrate:reset       Rollback all database migrations
  migrate:rollback    Rollback the last database migration
  migrate:status      Show the status of each migration
 queue
  queue:failed        List all of the failed queue jobs
  queue:failed-table  Create a migration for the failed queue jobs database table
  queue:flush         Flush all of the failed queue jobs
  queue:forget        Delete a failed queue job
  queue:listen        Listen to a given queue
  queue:restart       Restart queue worker daemons after their current job
  queue:retry         Retry a failed queue job
  queue:table         Create a migration for the queue jobs database table
  queue:work          Start processing jobs on the queue as a daemon
 schedule
  schedule:run        Run the scheduled commands

我使用的是 OS X El Capitan、Apache2、PHP 5.6.31

那么,我如何(如果有的话)使用 artisan 来制作:邮件?如果没有成熟的 Laravel 就无法实现这一点,是否有创建 Mailable 类的模板?它们可以使用吗?

参考:

https://laravel.com/docs/5.4/mail#generating-mailables https://scotch.io/tutorials/easy-and-fast-emails-with-laravel-5-3-mailables Lumen 5.3 send email(没有品牌:邮件?)

【问题讨论】:

【参考方案1】:

是的,有一些软件包正好允许这样做。例如:

https://github.com/flipboxstudio/lumen-generator

自述文件中所述,安装 Composer 包:

composer require flipbox/lumen-generator

然后添加bootstrap/app.php文件:

$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);

如果你随后在命令行上运行php artisan,你会得到新的命令:

 Available commands:
  clear-compiled      Remove the compiled class file
  help                Displays help for a command
  list                Lists commands
  migrate             Run the database migrations
  optimize            Optimize the framework for better performance
  serve               Serve the application on the PHP development server
  tinker              Interact with your application
 key
  key:generate        Set the application key
 make
  make:command        Create a new Artisan command
  make:controller     Create a new controller class
  make:event          Create a new event class
  make:job            Create a new job class
  make:listener       Create a new event listener class
  make:mail           Create a new email class
  make:middleware     Create a new middleware class
  make:migration      Create a new migration file
  make:model          Create a new Eloquent model class
  make:policy         Create a new policy class
  make:provider       Create a new service provider class
  make:seeder         Create a new seeder class
  make:test           Create a new test class

【讨论】:

以上是关于Lumen 5.4 与 Laravel 可邮寄的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3 通知与可邮寄

如何将 Laravel 护照用于 Auth 和 Lumen 作为 api

无法为测试设置单独的数据库 - Laravel/Lumen

laravel 5.4 密码重置问题——发送邮件

Laravel:Textarea 可邮寄删除新段落

用lumen构建API的相关流程