Laravel4: проблема с прикреплением файла к почте
Я сделал простое приложение, которое после регистрации одного пользователя отправляет приветственное письмо на его адрес. И все работает отлично. Но когда я попытался прикрепить файл к почте (в данном случае логотип), страница начала загружаться и... никогда не заканчивалась. И не отправляйте почту. Вы знаете, почему это может произойти?
Вот абстрактный класс Mailer:
<?php
namespace Mailers;
class InvalidContactInfoException extends \Exception {}
abstract class Mailer {
public $to;
public $email;
public $subject;
public $view;
public $data;
public $options;
public function __construct($user)
{
if(!is_object($user))
{
throw new InvalidContactInfoException('Please pass a valid user object');
}
$this->data = $user->toArray();
$this->to = $user->username;
$this->email = $user->email;
}
public function deliver()
{
$self = $this;
return \Mail::send($this->view, $this->data, function($message) use($self)
{
$message->to($self->email, $self->to)->subject($self->subject);
if(is_callable($self->option))
{
call_user_func($self->option, $message);
}
});
}
}
Это класс userMailer:
<?php
namespace Mailers;
class UserMailer extends Mailer {
public function welcomeMail()
{
$this->subject = 'Welcome in my website';
$this->view = 'emails.user.welcome2';
$this->option = function($message) // -- HERE IS WHERE I ATTACH THE FILE --
{
$message->attach(public_path().'img/logo.gif');
};
return $this;
}
}
И я вызываю Класс изнутри метода PostRegister, перед тем как сохранить пользователя в базе данных:
$mailer = new Mailers\UserMailer($user);
// var_dump($mailer);
$mailer->welcomeMail()->deliver();
$user->save();
1 ответ
Вы можете найти это потому, что вам нужно $this->options
не $this->option
, Вам, вероятно, также понадобится косая черта после public_path();
как это:
$this->options = function($message)
{
$message->attach(public_path().'/img/logo.gif');
};