views:

805

answers:

2

I am trying to send email using the following method in my action class:

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

The code above is (almost) verbatim (i.e. almost exact) copy of the Jobeet example - yet when I use correct email addresses for the sender and recipient, no mail is sent, instead, it times out.

I get the following error messages in my log file:

Fatal error: Maximum execution time of 30 seconds exceeded in $(SYMFONY_ROOT_DIR)\lib\log\sfWebDebugLogger.class.php on line 78 Call Stack: 0.0003 66216 1. {main}(

Does this clue suggest anything at all to anyone? Has anyone actually managed to send an email using SF1.3+ ?

Incidentally, I can send email from my machine with no problem, by simply using the mail() command (with the same sender/receiver address I am using in my Symfony test), so I know that SMTP etc works correctly on my machine

[Edit]

The full stack trace is included below:

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 

My mail configuration as specified in ($PROJECT_DIR)/apps/frontend/config/factories.yml is:

# 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]

My php.ini settings (with regards to SMTP) are:

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

Hi Stick,

I've managed email sending with Symfony 1.3.1.
I really don't know what's happening in your application, but here is my code and conf, that works great for me.

Controller:

<?php
... 
$message = Swift_Message::newInstance()
  ->setFrom('[email protected]')
  ->setTo('[email protected]')
  ->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]
Darmen
Thanks for the snippet Darmen, I shall try that shortly (in the next few hours), and let you know if I have any success with that. Once again, thanks
Stick it to THE MAN
Hi Darmen, I got it to work using Felix suggestion. I havent got round to trying your suggestion though - but I am sure it will work (I have voted it up). I will actually test it later on this weekedn time permiting.
Stick it to THE MAN
@Stick glad to see your problem solved. Thanks for voting!
Darmen
+2  A: 

You have another SMTP configuration in your php.ini file as in your factories.yml.
In the first, you provide your ISP as SMTP server and in the later your own machine (localhost). But I guess you don't have a SMTP server on your machine running, thats way it has to be ( I think):

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

But you can also setup swift mailer to send the emails via PHPs mail() function. This would then use your configuration in php.ini:

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

This and a lot more can be read in More with Symfony - Chapter Emails ;)

Felix Kling
Thank you very much Felix. Once again, I am indebted to you. I made the change to the host parameter (so it matched my php.ini setting), and it worked.
Stick it to THE MAN
BTW, thanks for the link. It is book marked now!
Stick it to THE MAN
@Stick it to THE MAN: It is always a pleasure to help :)
Felix Kling