Laravel Mail:函数Swift_Transport_EsmtpTransport :: __ construct()的参数太少

时间:2017-11-09 12:53:53

标签: laravel laravel-5 swiftmailer

当我尝试通过Laravel Mail类发送邮件时,出现以下错误:

  

Symfony \ Component \ Debug \ Exception \ FatalThrowableError

     

(E_RECOVERABLE_ERROR)类型错误:函数参数太少   传入了Swift_Transport_EsmtpTransport :: __ construct(),0   /[...]/CustomerCenter/database/factories/vendor/swiftmailer/swiftmailer/lib/classes/Swift/SmtpTransport.php   在第37行和至少3预期

我使用 php artisan make:mail Contact 创建了一个邮件类,在目录邮件中创建了一个刀片视图'contact'并创建了一个在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"
]
  ]
]

在Controller文件中,我用这种方式调用Mail类:

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

我已经检查了这些问题:

我已经执行了:

  • php artisan config:clear
  • php artisan vendor:publish

我很困惑,我在本教程视频中做了同样的解释: https://laracasts.com/series/laravel-from-scratch-2017/episodes/26

1 个答案:

答案 0 :(得分:0)

好的,由于某些原因,包含路径是: 的数据库/工厂/销售商 / swiftmailer 但它应该是供应商 / swiftmailer。

我没有意识到这一点。我想我的FTP同步程序将所有供应商的东西复制到数据库/工厂。删除这些东西使得laravel抛出了丢失文件的异常。所以现在我知道该怎么做:

一个简单的

  

composer dump-autoload

解决了问题...