2012-04-03 69 views
18

我無法發送帶有symfony2和swiftmailer的電子郵件。我在如何調試這個問題上也有點失落。以下是代碼。首先我要創建一個表單來顯示。在提交(request-> method == post)後,我嘗試發送電子郵件。我沒有收到任何錯誤,它將我帶到謝謝頁面,但是,我沒有收到任何電子郵件。我已經在產品和開發測試。在dev中,我提交後打開了分析器,它顯示了0封電子郵件。任何幫助表示讚賞!謝謝!Symfony2 Swiftmailer不發送

public function contactAction(Request $request) 
{ 
    $defaultData = array('name' => 'Name', 'email' => 'Email', 'subject' => 'Subject', 'message' => 'Message'); 
    $form = $this->createFormBuilder($defaultData) 
     ->add('name', 'text') 
     ->add('email', 'email') 
     ->add('subject', 'text') 
     ->add('message', 'textarea') 
     ->getForm(); 

    if($request->getMethod() == 'POST') { 
     $form->bindRequest($request); 
     $data = $form->getData(); 
     $message = \Swift_Message::newInstance() 
      ->setSubject($data['subject']) 
      ->setFrom('[email protected]') 
      ->setTo('[email protected]') 
      ->setBody($this->renderView('AdaptiveSiteBundle:Default:email.txt.twig', array('name' => $data['name'], 'message' => $data['message']))) 
     ; 
     $this->get('mailer')->send($message); 

     return $this->redirect($this->generateUrl('thankyou')); 
    } 

    return array("form" => $form->createView()); 
} 
到-prevent-郵件正在測試期間發送
+1

如果你想分析器顯示發送郵件,你必須刪除重定向。 – 2012-04-03 20:23:16

+0

你已經設置了郵件服務器? – Flukey 2012-04-03 22:51:27

+1

我還沒有設置郵件服務器......有關此服務器/文檔的任何建議?我正在運行Ubuntu。 – 2012-04-04 02:29:04

回答

9

你可以在這裏找到如何發送電子郵件與Symfony2的整個過程。我只是測試它似乎工作正常。

http://tutorial.symblog.co.uk/docs/validators-and-forms.html#sending-the-email

http://symfony.com/doc/current/email.html

+0

好教程,Gmail爲我工作,但我一直無法使用默認的本地主機配置。 – 2014-04-22 10:11:30

+0

它在我的本地服務器上工作,但不在遠程服務器上(在線),我該怎麼辦? – krachleur 2016-03-14 17:40:33

+1

檢查您的遠程服務器參數的swiftmailer。也許你有開發和生產環境的自定義參數。 – 2016-03-15 08:01:15

4

我經常設置以下配置config_dev.yml,也許你也會做同樣的,忘了?

如果這是config_dev.yml,其設置爲false:

swiftmailer: 
    disable_delivery: true 
+0

不,我檢查和我沒有禁用。生產過程中也會發生這種情況 – 2012-04-05 23:49:53

+0

另一個長處是,但我通常在我的Sf2日誌中沒有出現錯誤,這些日誌顯示在/var/log/apache2/error.log中,請參閱此處的任何內容? (對不起,正如我所說,遠投) – Dieter 2012-04-06 09:38:58

+0

刪除重定向後,我看到一封電子郵件正在通過分析器發送..但我仍然沒有收到它。沒有在Apache,PHP或symfony日誌 – 2012-04-09 00:47:22

22

你可以發佈parameters.yml嗎?

此外,請確保後臺打印處於禁用狀態,以便即時發送電子郵件。如果你有swiftmailer配置下一個滑項,刪除它,例如:

 
swiftmailer: 
    transport: %mailer_transport% 
    host:  %mailer_host% 
    username: %mailer_user% 
    password: %mailer_password% 
    spool:  { type: memory } 

應該是:

 
swiftmailer: 
    transport: %mailer_transport% 
    host:  %mailer_host% 
    username: %mailer_user% 
    password: %mailer_password% 
+2

這適用於我,因爲我使用gmail傳輸 – Rocco 2013-11-21 09:50:13

+0

謝謝我看不到錯誤(無法與主機建立連接) – arsenik 2015-06-28 10:07:32

0

config.yml

# Swiftmailer Configuration 
swiftmailer: 
    transport: smtp 
    encryption: ssl 
    auth_mode: login 
    host:  smtp.xx.eu 
    username: username 
    password: password 

控制器/動作

$messageObject = \Swift_Message::newInstance() 
      ->setSubject('Subject') 
      ->setFrom('[email protected]') 
      ->setTo('[email protected]') 
      ->setBody('message'); 
$this->get('mailer')->send($messageObject); 
4

除了以上的溶液,建議你從函數除去dieexit,你使用swiftmailer代碼。如果你的代碼是正確的,這將解決你的問題。

+0

用'return new Response()'替換quick&dirty'die()'爲我工作。謝謝! – 2016-09-05 17:50:34

+0

感謝您節省我的時間 – 2017-01-09 12:16:07