2011-12-28 105 views
0

我在symfony 1.4.8(和Doctrine as ORM)中使用swiftmailer(transport)來發送我的郵件。在symfony中發送電子郵件

我已經按照本書的說法配置了所有內容。

dev: 
    mailer: 
    class: sfMailer 
    param: 
     delivery_strategy: spool 
     spool_class:  Swift_DoctrineSpool 
     spool_arguments: [ MailMessage, message, getSpooledMessages ] 
     transport: 
     class: Swift_SmtpTransport 
     param: 
      host: something 
      port: 26 
      encryption: ~ 
      username: something 
      password: something 

問題是,當我使用的即時戰略,它需要太多的時間來發送郵件和用戶應該等待,直到它完成。然後行動完成,你可以看到結果。這對我並不好,因爲我想發送用戶註冊的驗證郵件,如果速度很慢,用戶在註冊過程中會陷入睡眠狀態。

而且我也不能使用假脫機策略。因爲我必須手動將它們發送給任務(對嗎?),我也做不到。因爲它應該在註冊後自動發送。

那麼這種情況是否有策略?這對發送郵件來說足夠快(不需要等到發送郵件)

+0

是的,如果您使用假脫機策略,您需要定期運行任務。你爲什麼不好?每5分鐘通過cron運行一次,應該足夠快。您也可以選擇立即發送單個電子郵件。 – Maerlyn 2011-12-28 10:02:50

+0

是的,我也使用過(立即發送郵件)。但是這個策略太耗時。我不知道爲什麼,但發送它太多了。運行發送郵件任務也不錯,但我認爲這對性能問題不好。是嗎? – Firouziam 2011-12-28 10:18:10

+0

每幾分鐘運行一次任務,在大多數情況下,這不會成爲性能問題。 – Maerlyn 2011-12-28 11:12:08

回答

0

我使用實時策略發送電子郵件,有時數百個循環。我發現電子郵件,特別是在序列早期發送時,相對較快。

我已經使用了以下技術:通過API

  • Gmail和SSL加密
  • SendGrid
  • 我自己的API,它使用了得到由發送郵件任務席捲電子郵件事務表。

根據我的經驗,一封確認電子郵件應該非常方便。如果不是,我會尋求其他(命令行)方法來調試該事務,以查看瓶頸在哪裏。我懷疑它的PHP,Symfony或Swift。