2013-08-27 19 views
0

我做了一個簡單的應用程序,一個用戶註冊後,一個歡迎郵件發送到他的地址。 一切正常。 但是,當我試圖附加一個文件到郵件(在這種情況下的標誌)頁面開始加載和..永遠不會完成。並且不要發送郵件。 你知道爲什麼會發生這種情況嗎?Laravel4:將文件附加到郵件的問題

這裏是梅勒抽象類:

<?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(); 
+0

'$ MESSAGE->附加()',從哪兒弄來'附加()'方法??是定義在那裏? –

+0

我在Jeffrey Way教程中找到了這個。它應該是一個SwiftMailer方法。我沒有得到任何錯誤,但它開始加載並永遠不會結束.. – johnnyfittizio

回答

0

您可能會發現,那是因爲你需要$this->options$this->option。你可能還需要你public_path();這樣的後斜槓:

$this->options = function($message) 
{ 
$message->attach(public_path().'/img/logo.gif'); 
};