Когда я пытаюсь отправить почту через класс Laravel Mail, я получаю следующую ошибку:

Symfony \ Компонент \ Debug \ Исключение \ fatalthrowableerror

(E_RECOVERABLE_ERROR) Ошибка типа: слишком мало аргументов для функции Swift_Transport_EsmtpTransport :: __ construct (), 0 передано в /[... ]/CustomerCenter/database/factories/vendor/swiftmailer/swiftmailer/lib/classes/Swiftns/Smtp строка 37 и как минимум 3 ожидаемых

Я создал почтовый класс с помощью php artisan make: mail Contact , создал "контакт" в виде лезвия в каталоге mails и создал контроллер, вызываемый в маршруте web.php. файл.

Класс Contact выглядит так:

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class Contact extends Mailable {
    use Queueable, SerializesModels;

    /**
     * Create a new message instance.
     *
     */
    public function __construct() {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build() {
        return $this->view('emails.contact');
    }
}

Это моя конфигурация электронной почты - использовал Config :: get ('mail')

array:9 [▼
  "driver" => "smtp"
  "host" => "xxx.kasserver.com"
  "port" => "25"
  "from" => array:2 [▼
    "address" => "mail@example.com"
    "name" => "Example"
  ]
  "encryption" => null
  "username" => "xxx"
  "password" => "***"
  "sendmail" => "/usr/sbin/sendmail -bs"
  "markdown" => array:2 [▼
    "theme" => "default"
    "paths" => array:1 [▼
      0 => "/[...]/resources/views/vendor/mail"
]
  ]
]

В файле контроллера я вызываю класс Mail следующим образом:

\Mail::to('mail@example.com')->send( new Contact );

Я уже проверял эти вопросы:

Я уже выполнил:

  • Конфигурация PHP Artisan: очистить
  • поставщик php artisan: опубликовать

Я запутался, я сделал то же самое, что описано в этом обучающем видео: https://laracasts.com/series/laravel-from-scratch- 2017 / серии / 26

0
DaFunkyAlex 9 Ноя 2017 в 15:53

1 ответ

Лучший ответ

Хорошо, по какой-то причине путь включения был: база данных / фабрики / поставщик / swiftmailer но это должен был быть vendor / swiftmailer.

Я этого не осознавал. Я предполагаю, что моя программа синхронизации FTP скопировала все материалы поставщика в базу данных / фабрики. Удаление материала заставило laravel выбросить исключение из отсутствующего файла. Итак, теперь я знал, что делать:

Просто

композитор дамп-автозагрузка

Исправил проблему ...

0
DaFunkyAlex 15 Ноя 2017 в 09:54