Laravel: 5.6: Отправить письмо с файлом, используя команду - PullRequest
0 голосов
/ 10 октября 2018

Я пытаюсь отправить электронное письмо с помощью команды в Laravel.Я хотел бы отправить файл из определенной папки.Ранее я делал это с помощью представления с формой, но теперь я хочу отправить электронное письмо с помощью команды.Файл всегда будет находиться в одной папке.

Это код команды:

<?php

namespace efsystem\Console\Commands;

use Illuminate\Console\Command;
use Storage;
use Mail;
use Config;

 class SendEmailEfsystem extends Command
 {
     /**
      * The name and signature of the console command.
      *
      * @var string
      */
     protected $signature = 'emails:send';

     /**
      * The console command description.
      *
      * @var string
      */
     protected $description = 'Sending emails to the users';

     /**
      * Create a new command instance.
      *
      * @return void
      */
     public function __construct()
     {
         parent::__construct();
     }

     /**
      * Execute the console command.
      *
      * @return mixed
      */
     public function handle()
     {
         $data = array(
             'destino' => 'example@gmail.com',
             'asunto' => 'example',
         );

         Mail::send('administracion.email.email_body', $data, function ($message) use ($data) {
             $message->to($data['destino']);
             $message->subject($data['asunto']);
             $message->from(Config::get('mail.username'));
         });

         $this->info('The emails are send successfully!');
     }
 }

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы можете использовать N69S a_file ответ

Это основные советы, которые помогут вам выполнить команду.Ваш Kernel.php должен быть таким

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

class Kernel extends ConsoleKernel
{
 /**
 * The Artisan commands provided by your application.
 *
 * @var array
 */
protected $commands = [
    Commands\SendEmailEfsystem::class,
];

/**
 * Define the application's command schedule.
 *
 * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
 * @return void
 */
protected function schedule(Schedule $schedule)
{
    $schedule->command('emails:send')->everyMonth();
}

/**
 * Register the Closure based commands for the application.
 *
 * @return void
 */
protected function commands()
{
    require base_path('routes/console.php');
}
}

Тогда, если вы хотите запустить его.Просто запустите php artisan emails:send

или вы хотите запустить его, используя код, который вы можете использовать Artisan::call('emails:send);

0 голосов
/ 10 октября 2018

Поскольку в «форме» вы использовали $request['a_file'] переменная была экземпляром Symfony\Component\HttpFoundation\File\UploadedFile, который является расширением Symfony\Component\HttpFoundation\File\File.

, вам нужно создать экземпляр класса Fileс вашим путем.

$data = array(
    'destino'    => 'example@gmail.com',
    'asunto'     => 'example',
    'a_file'     => new \Symfony\Component\HttpFoundation\File\File($pathToFile, true)
 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...