2015-08-15 39 views
0

我一直在嘗試設置我的Zend Framework環境以在localhost中發送郵件。我嘗試使用Soflomo\Mail向使用我的RegistrationController在我的Web應用程序中註冊的用戶發送電子郵件,當索引動作被調用時,sendConfirmationMail()函數也被稱爲內部。我想集成第三方電子郵件提供商如Mandrill和它,並且SlmMail是一個與各種第三方API集成發送郵件的模塊。我想設置交易郵件使用Mandrill.And我非常困惑。使用Mandrill API在Zend Framework 2中發送郵件

如果有人將Mandrill與Zend Framework 2集成在一起,請使用示例來指導我,或者只是指導我如何設置完整的過程。任何幫助都將非常感謝。

+0

https://packagist.org/packages/netglue/zf2-mandrill-module –

回答

1

因此,假如你有這樣的控制器操作:

public function sendAction() 
{ 
    // some logic 
    $this->sendConfirmationMail(); 
} 

使用Soflomo \ Mail和SlmMail,你可以同時連結以下兩個途徑。

首先,SlmMail提供運輸。有一個Mandrill運輸,所以先按照installation instructions。如果您複製了配置並設置了憑據,則可以使用名爲SlmMail\Mail\Transport\MandrillTransport的服務。

private function sendConfirmationMail() 
{ 
    $mail = new \Zend\Mail\Message; 

    $transport = $this->getServiceLocator() 
         ->get('SlmMail\Mail\Transport\MandrillTransport'); 
    $transport->send($mail); 
} 

很明顯,這不是最好的方法。最好的是與dependency injection instead of the service locator pattern合作。還有Soflomo\Mail來幫助完成此設置。

然後,您將Mandrill傳輸附加爲Soflomo \ Mail傳輸。在您的配置中:

'service_manager' => [ 
    'aliases' => [ 
     'Soflomo\Mail\Transport' => 'SlmMail\Mail\Transport\MandrillTransport', 
    ], 
], 

這樣,如果Soflomo \ Mail加載傳輸,它會從SlmMail加載傳輸。接下來,Soflomo \郵件提供了一個門面的服務,你可以加載到你的控制器:

use Soflomo\Mail\Service\MailServiceInterface; 

class RegistrationController extends AbstractActionController 
{ 
    private $service; 

    public function __construct(MailServiceInterface $service) 
    { 
     $this->service = $service; 
    } 

    public function sendAction() 
    { 
     // some logic 

     $this->sendConfirmationMail(); 
    } 


    private function sendConformationMail() 
    { 
     $this->service->send([ 
      /* here all your options*/ 
     ]); 
    } 
} 

剩下的唯一的事情就是在控制器中注入服務。這在ZF2中是相當標準的程序,在這裏我不會解釋。如果您需要此信息,則可在ZF2 manual中完美解釋。只記得你想注入的服務叫做。

+0

謝謝你這麼多!這是一個很大的幫助!一切正常,但郵件沒有發送到新的註冊用戶。我檢查了我的出站在mandrill中,也沒有顯示我什麼都沒有。我是否需要設置任何其他信息除了api鍵以外的mandrill api! – user4946127

+0

剛開始調試:代碼在哪裏結束?在你自己的代碼中是否有錯誤? Soflomo \郵件? SlmMail? HTTP客戶端? –

相關問題