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');
};
Другие вопросы по тегам