English 中文(简体)
Unable to send mail in Symfony 1.31
原标题:

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)liblogsfWebDebugLogger.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)liblogsfWebDebugLogger.class.php on line 78 Call Stack: 0.0003 66216 
1.  {main}() $(PROJECT_DIR)webfrontend_dev.php:0 0.2684 10774096
2.  sfContext->dispatch() $(PROJECT_DIR)webfrontend_dev.php:13 0.2684 10774240 
3.  sfFrontWebController->dispatch() $(SF_ROOT_DIR)libutilsfContext.class.php:170 0.2691 10795440 
4.  sfController->forward() $(SF_ROOT_DIR)libcontrollersfFrontWebController.class.php:48 0.3280 11707400 
5.  sfFilterChain->execute($(SF_ROOT_DIR)libcontrollersfController.class.php:235 0.3286 11715304 
6.  sfRenderingFilter->execute() $(SF_ROOT_DIR)libfiltersfFilterChain.class.php:53 0.3286 11715768 
7.  sfFilterChain->execute() $(SF_ROOT_DIR)libfiltersfRenderingFilter.class.php:33 0.3292 11725920 
8.  sfGuardRememberMeFilter->execute() $(SF_ROOT_DIR)libfiltersfFilterChain.class.php:53 0.3292 11727680 
9.  sfFilterChain->execute() $(PROJECT_DIR)appsfrontendlibsfGuardRememberMeFilter.class.php:65 0.3298 11740192 
10. nonMemberCheckFilter->execute() $(SF_ROOT_DIR)libfiltersfFilterChain.class.php:53 0.3299 11742280 
11. sfFilterChain->execute() $(PROJECT_DIR)appsfrontendlib
onMemberCheckFilter.class.php:68 0.3305 11757240 
12. sfCacheFilter->execute() $(SF_ROOT_DIR)libfiltersfFilterChain.class.php:53 0.3426 11776320 
13. sfFilterChain->execute() $(SF_ROOT_DIR)libfiltersfCacheFilter.class.php:65 0.3433 11793568 
14. sfValidationExecutionFilter->execute() $(SF_ROOT_DIR)libfiltersfFilterChain.class.php:53 0.3434 11795872 
15. sfValidationExecutionFilter->handleAction() $(SF_ROOT_DIR)libpluginssfCompat10PluginlibfiltersfValidationExecutionFilter.class.php:43 0.3600 11796712 
16. sfValidationExecutionFilter->executeAction() $(SF_ROOT_DIR)libpluginssfCompat10PluginlibfiltersfValidationExecutionFilter.class.php:87 0.3600 11797136 
17. sfActions->execute() (SF_ROOT_DIR)libpluginssfCompat10PluginlibfiltersfValidationExecutionFilter.class.php:169 0.3608 11820384 
18. homeActions->executeTestnewmail() $(SF_ROOT_DIR)libactionsfActions.class.php:60 0.4796 13858992 
19. sfMailer->send() $(PROJECT_DIR)appsfrontendmoduleshomeactionsactions.class.php:621 0.4797 13859496 
20. Swift_Mailer->send() $(SF_ROOT_DIR)libmailersfMailer.class.php:294 0.4797 13860016 
21. Swift_Transport_AbstractSmtpTransport->start() $(SF_ROOT_DIR)libvendorswiftmailerclassesSwiftMailer.php:74 0.4850 13876104 
22. Swift_Transport_StreamBuffer->initialize() $(SF_ROOT_DIR)libvendorswiftmailerclassesSwiftTransportAbstractSmtpTransport.php:101 0.4850 13876448 
23. Swift_Transport_StreamBuffer->_establishSocketConnection() $(SF_ROOT_DIR)libvendorswiftmailerclassesSwiftTransportStreamBuffer.php:70 0.4850 13877896 
24. fsockopen() $(SF_ROOT_DIR)libvendorswiftmailerclassesSwiftTransportStreamBuffer.php:233 30.4772 13879672
25. sfWebDebugLogger->handlePhpError() $(SF_ROOT_DIR)liblogsfWebDebugLogger.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
最佳回答

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

问题回答

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




相关问题
Angle brackets in php

I want to store angle brackets in a string in PHP because i want to eventually use mail() to send an HTML email out. The following is the code that doesn t seem to work. while(...) { $msg .= "<...

authlogic auto_register feature using my options

I have auto registration working with authlogic using gaizka s version of authlogic_openid which I found on Github since pelle s original addition of the feature seemed to cause issues. http://...

Zend 邮件问题,涉及外国char子+ com子

泽斯德邮局在名称被定为具有外国性质(如“保”)和 com(”)的物品时,就放弃了一种例外(因为邮局(邮局)退回假)。 重新提出以下守则。

How to track an email in Java?

How I can track an email? I m using java on the server side for sending emails. I want to track whether it is delivered , opened, etc... How I can do that ?

Web Link in a mail is not rendering as link in yahoo

string from = "abc@gmail.com"; string to = "xyz@gmail.com,xyz@yahoo.co.in"; string password="abcxyz"; MailMessage mail = new System.Net.Mail.MailMessage(); mail.To.Add(to); mail.From = new ...

SharePoint - Approaching Website Storage Limit Email

How can i go about changing the distribution list as well as the email text for the email that goes out to site collection admin when a site collection approaches it s size limit? Thanks for your ...

How to create an email mailing list

Im creating a coming soon page for a website im developing, and im adding an option for the user to enter their email address so we can email them when the site is up. How do I do this?

CCNet email does not include MSBuild results

We re using CCNet 1.4.4.83 but when an MSBuild task fails, we don t get the MSBuild results (i.e. missing file or whatever reason the compile failed) in the email notification. I do see the build ...

热门标签