Pergunta

Estou tentando enviar email usando o seguinte método na minha aula de ação:

  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');
  }

O código acima é (quase) cópia literal (ou seja, quase exata) do exemplo do JobEet - mas, quando uso endereços de email corretos para o remetente e o destinatário, nenhum e -mail é enviado, em vez disso, ele tem o tempo de escala.

Recebo as seguintes mensagens de erro no meu arquivo de log:

Erro fatal: Tempo máximo de execução de 30 segundos excedido em $ (symfony_root_dir) lib log sfwebdebuglogger.class.php na linha 78 pilha de chamadas: 0,0003 66216 1. {main} (

Essa pista sugere alguma coisa para alguém? Alguém realmente conseguiu enviar um email usando SF1.3+?

Aliás, posso enviar e -mail da minha máquina sem problemas, simplesmente usando o comando Mail () (com o mesmo endereço de remetente/receptor que estou usando no meu teste Symfony), então eu sei que SMTP etc funciona corretamente na minha máquina

Editar

O rastreamento completo da pilha está incluído abaixo:

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 

Minha configuração de email, conforme especificado em ($ 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

Minhas configurações de php.ini (com relação ao SMTP) são:

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

Solução

Você tem outra configuração SMTP em seu php.ini arquivo como no seu factories.yml.
No primeiro, você fornece seu ISP como servidor SMTP e, posteriormente, sua própria máquina (localhost). Mas acho que você não tem um servidor SMTP em sua máquina em funcionamento, é assim que tem que ser (eu acho):

 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:   ~

Mas você também pode configurar o Swift Mailer para enviar os e -mails via PHPS mail() função. Isso então usaria sua configuração em php.ini:

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

Isso e muito mais podem ser lidos em Mais com Symfony - e -mails de capítulo ;)

Outras dicas

Eu gerenciei o envio de e -mail com o Symfony 1.3.1.
Eu realmente não sei o que está acontecendo em seu aplicativo, mas aqui está meu código e conf, isso funciona muito bem para mim.

Controlador:

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

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

fábricas.yml:

all:
  mailer:
    class: sfMailer
    param:
      delivery_strategy: spool
      spool_class:       Swift_FileSpool
      spool_arguments:   [/path/to/swift_spool]
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top