2011-12-28 8 views
0

Я использую swiftmailer (транспорт) в symfony 1.4.8 (и Doctrine as ORM), чтобы отправлять свои письма.Отправить письмо в 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

Да, вам нужно периодически запускать задачу, если вы используете стратегию золотника. Почему тебе нехорошо? Запускайте его через cron каждые 5 минут, это должно быть достаточно быстро. Вы также можете сразу отправить одиночные электронные письма. – Maerlyn

+0

да я использовал тоже тоже (сразу отправка mails). но эта стратегия слишком трудоемка. Я не знаю, почему, но это слишком много, чтобы отправить его. работа с отправкой почты тоже хороша, но я думаю, что это не хорошо для проблем с производительностью. это? – Firouziam

+0

Выполнение задачи каждые несколько минут, что фактически ничего не делает в большинстве случаев, не должно быть проблемой производительности. – Maerlyn

ответ

0

Я отправляю электронные письма с использованием стратегии реального времени, а иногда и сотни в цикле. Я нахожу, что электронные письма, особенно когда они отправляются в начале последовательности, являются относительно быстрыми.

Я использовал следующие методы:

  • Gmail и SSL шифрования
  • SendGrid через API
  • Мой собственный API, который использовал таблицу электронной транзакции, которая получает охвачена задачу, чтобы отправить электронную почту ,

По моему опыту, одно электронное письмо с подтверждением должно быть очень целесообразным. Если это не так, я бы поискал другие (командной строки) способы отладки этой транзакции, чтобы увидеть, где вы узкое место. Я сомневаюсь, что его PHP, Symfony или Swift.