Невозможно отправить почту в Symfony 1.31 - PullRequest
1 голос
/ 03 февраля 2010

Я пытаюсь отправить электронное письмо, используя следующий метод в моем классе действий:

  public function executeTestnewmail()
  {
    // send an email to the affiliate
    $message = $this->getMailer()->compose(
      array('my_email_address_here' => 'Jobeet Bot'),
      'recipient_address_here',
      'Jobeet affiliate token',
      <<<EOF
Your Jobeet affiliate account has been activated.

Your token is 1.

The Jobeet Bot.
EOF
    );

    $this->getMailer()->send($message);

    $this->redirect('@homepage');
  }

Приведенный выше код является (почти) дословной (то есть почти точной) копией примера Jobeet - однако, когда я использую правильные адреса электронной почты для отправителя и получателя, письмо не отправляется, вместо этого оно истекает.

В моем файле журнала появляются следующие сообщения об ошибках:

Неустранимая ошибка: максимальное время выполнения 30 секунд превышено в $ (SYMFONY_ROOT_DIR) \ lib \ log \ sfWebDebugLogger.class.php в строке 78 Вызов стека: 0.0003 66216 1. {main} (

Эта подсказка вообще кому-нибудь что-нибудь подсказывает? Кому-нибудь удалось отправить электронное письмо с использованием SF1.3 +?

Между прочим, я могу без проблем отправлять электронную почту со своего компьютера, просто используя команду mail () (с тем же адресом отправителя / получателя, который я использую в моем тесте Symfony), поэтому я знаю, что SMTP и т. Д. Работают правильно моя машина

[Изменить]

Полная трассировка стека включена ниже:

Fatal error: Maximum execution time of 30 seconds exceeded in $(SF_ROOT_DIR)\lib\log\sfWebDebugLogger.class.php on line 78 Call Stack: 0.0003 66216 
1.  {main}() $(PROJECT_DIR)\web\frontend_dev.php:0 0.2684 10774096
2.  sfContext->dispatch() $(PROJECT_DIR)\web\frontend_dev.php:13 0.2684 10774240 
3.  sfFrontWebController->dispatch() $(SF_ROOT_DIR)\lib\util\sfContext.class.php:170 0.2691 10795440 
4.  sfController->forward() $(SF_ROOT_DIR)\lib\controller\sfFrontWebController.class.php:48 0.3280 11707400 
5.  sfFilterChain->execute($(SF_ROOT_DIR)\lib\controller\sfController.class.php:235 0.3286 11715304 
6.  sfRenderingFilter->execute() $(SF_ROOT_DIR)\lib\filter\sfFilterChain.class.php:53 0.3286 11715768 
7.  sfFilterChain->execute() $(SF_ROOT_DIR)\lib\filter\sfRenderingFilter.class.php:33 0.3292 11725920 
8.  sfGuardRememberMeFilter->execute() $(SF_ROOT_DIR)\lib\filter\sfFilterChain.class.php:53 0.3292 11727680 
9.  sfFilterChain->execute() $(PROJECT_DIR)\apps\frontend\lib\sfGuardRememberMeFilter.class.php:65 0.3298 11740192 
10. nonMemberCheckFilter->execute() $(SF_ROOT_DIR)\lib\filter\sfFilterChain.class.php:53 0.3299 11742280 
11. sfFilterChain->execute() $(PROJECT_DIR)\apps\frontend\lib\nonMemberCheckFilter.class.php:68 0.3305 11757240 
12. sfCacheFilter->execute() $(SF_ROOT_DIR)\lib\filter\sfFilterChain.class.php:53 0.3426 11776320 
13. sfFilterChain->execute() $(SF_ROOT_DIR)\lib\filter\sfCacheFilter.class.php:65 0.3433 11793568 
14. sfValidationExecutionFilter->execute() $(SF_ROOT_DIR)\lib\filter\sfFilterChain.class.php:53 0.3434 11795872 
15. sfValidationExecutionFilter->handleAction() $(SF_ROOT_DIR)\lib\plugins\sfCompat10Plugin\lib\filter\sfValidationExecutionFilter.class.php:43 0.3600 11796712 
16. sfValidationExecutionFilter->executeAction() $(SF_ROOT_DIR)\lib\plugins\sfCompat10Plugin\lib\filter\sfValidationExecutionFilter.class.php:87 0.3600 11797136 
17. sfActions->execute() (SF_ROOT_DIR)\lib\plugins\sfCompat10Plugin\lib\filter\sfValidationExecutionFilter.class.php:169 0.3608 11820384 
18. homeActions->executeTestnewmail() $(SF_ROOT_DIR)\lib\action\sfActions.class.php:60 0.4796 13858992 
19. sfMailer->send() $(PROJECT_DIR)\apps\frontend\modules\home\actions\actions.class.php:621 0.4797 13859496 
20. Swift_Mailer->send() $(SF_ROOT_DIR)\lib\mailer\sfMailer.class.php:294 0.4797 13860016 
21. Swift_Transport_AbstractSmtpTransport->start() $(SF_ROOT_DIR)\lib\vendor\swiftmailer\classes\Swift\Mailer.php:74 0.4850 13876104 
22. Swift_Transport_StreamBuffer->initialize() $(SF_ROOT_DIR)\lib\vendor\swiftmailer\classes\Swift\Transport\AbstractSmtpTransport.php:101 0.4850 13876448 
23. Swift_Transport_StreamBuffer->_establishSocketConnection() $(SF_ROOT_DIR)\lib\vendor\swiftmailer\classes\Swift\Transport\StreamBuffer.php:70 0.4850 13877896 
24. fsockopen() $(SF_ROOT_DIR)\lib\vendor\swiftmailer\classes\Swift\Transport\StreamBuffer.php:233 30.4772 13879672
25. sfWebDebugLogger->handlePhpError() $(SF_ROOT_DIR)\lib\log\sfWebDebugLogger.class.php:0 

Моя конфигурация почты, как указано в ($ PROJECT_DIR) /apps/frontend/config/factories.yml:

# this is commented out because I want to be able to send mails in dev environment
#dev:
#  mailer:
#    param:
#      delivery_strategy: none

  test:
    mailer:
      param:
        delivery_strategy: none


  all:
    mailer:
      class: sfMailer
      param:
        logging:           %SF_LOGGING_ENABLED%
        charset:           %SF_CHARSET%
        delivery_strategy: realtime
        transport:
          class: Swift_SmtpTransport
          param:
            host:       localhost
            port:       25
            encryption: ~
            username:   ~
            password:   ~

[Edit2]

Мои настройки php.ini (в отношении SMTP):

[mail function]
; For Win32 only.
;SMTP = localhost
SMTP = smtp.my-isp-address-here
smtp_port = 25

Ответы [ 2 ]

3 голосов
/ 04 февраля 2010

В вашем файле php.ini есть другая конфигурация SMTP, такая же, как в factories.yml.
. Сначала вы предоставляете своего ISP в качестве сервера SMTP, а затем - свой собственный компьютер (localhost).Но я полагаю, что на вашем компьютере не работает SMTP-сервер, вот так (я думаю):

 all:
    mailer:
      class: sfMailer
      param:
        logging:           %SF_LOGGING_ENABLED%
        charset:           %SF_CHARSET%
        delivery_strategy: realtime
        transport:
          class: Swift_SmtpTransport
          param:
            host:       smtp.your-isp-address-here
            port:       25
            encryption: ~
            username:   ~
            password:   ~

Но вы также можете настроить swift mailer для отправки писем через PHP mail() функция.Это тогда будет использовать вашу конфигурацию в php.ini:

all:
    mailer:
      class: sfMailer
      param:
        logging:           %SF_LOGGING_ENABLED%
        charset:           %SF_CHARSET%
        delivery_strategy: realtime
        transport:
          class: Swift_MailTransport

Это и многое другое можно прочитать в Еще с Symfony - электронная почта главы ;)

1 голос
/ 03 февраля 2010

Мне удалось отправить электронное письмо с помощью Symfony 1.3.1.
Я действительно не знаю, что происходит в вашем приложении, но вот мой код и конф, который отлично работает для меня.

Контроллер

<?php
... 
$message = Swift_Message::newInstance()
  ->setFrom('sender@foo.com')
  ->setTo('recipient@bar.com')
  ->setSubject('subject')
  ->setBody('body')
  ->setContentType('text/html');

$this->getMailer()->send($message);
...

factories.yml

all:
  mailer:
    class: sfMailer
    param:
      delivery_strategy: spool
      spool_class:       Swift_FileSpool
      spool_arguments:   [/path/to/swift_spool]
...