无法在 Symfony 1.31 中发送邮件
我正在尝试在我的操作类中使用以下方法发送电子邮件:
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 示例的逐字(即几乎精确)副本 - 然而,当我为发件人和收件人使用正确的电子邮件地址时,不会发送任何邮件已发送,反而超时。
我在日志文件中收到以下错误消息:
致命错误:第 78 行调用堆栈上的 $(SYMFONY_ROOT_DIR)\lib\log\sfWebDebugLogger.class.php 超出了最大执行时间 30 秒:0.0003 66216 1. {main}(
这条线索对任何人有什么暗示吗? 有人真正成功地使用 SF1.3+ 发送电子邮件吗?
顺便说一句,我可以通过简单地使用 mail() 命令(使用与我在 Symfony 测试中使用的相同的发件人/收件人地址)从我的机器发送电子邮件,没有任何问题,所以我知道 SMTP 等在我的机器上正常工作
< strong>[Edit]
完整的堆栈跟踪如下:
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
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的
php.ini
文件中有另一个 SMTP 配置,如factories.yml
中一样。在第一个中,您提供 ISP 作为 SMTP 服务器,在后面提供您自己的计算机 (
localhost
)。但我猜你的机器上没有运行 SMTP 服务器,这就是它必须的方式(我认为):但你也可以设置 swift mailer 通过 PHP
mail()
发送电子邮件功能。然后,这将使用您在php.ini
中的配置:可以在 Symfony 的更多内容 - 章节电子邮件 ;)
You have another SMTP configuration in your
php.ini
file as in yourfactories.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):But you can also setup swift mailer to send the emails via PHPs
mail()
function. This would then use your configuration inphp.ini
:This and a lot more can be read in More with Symfony - Chapter Emails ;)
我已经使用 Symfony 1.3.1 管理电子邮件发送。
我真的不知道您的应用程序中发生了什么,但这是我的代码和配置,这对我来说非常有用。
控制器:
factories.yml:
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:
factories.yml: