2010-02-03 3 views
1

Я пытаюсь отправить электронную почту, используя следующий метод в моем классе действий:Невозможно отправить почту в 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 - но когда я использую правильные адреса электронной почты для отправителя и получателя, почта не отправляется, вместо этого время истекает.

Я получаю следующее сообщение об ошибке в файле протокола:

Фатальная ошибка: Максимальное время выполнения 30 секунд превышен в $ (SYMFONY_ROOT_DIR) \ Lib \ \ sfWebDebugLogger.class.php войти на линии 78 Call Stack: 0,0003 66216 1. {главная} (

Свидетельствует ли это подсказкой вообще ничего никому? кто на самом деле удалось отправить электронное письмо с помощью 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 
+0

Можете ли вы предоставить следующие несколько строк этой трассировки стека? – nortron

+0

Возможно, вы сможете настроить свое электронное письмо? –

+1

Ваша собственная машина - это действительно SMTP-сервер? –

ответ

3

У вас есть другая конфигурация SMTP в файле php.ini, как в вашем factories.yml.
Во-первых, вы предоставляете своего интернет-провайдера как 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: ~ 

Но вы также можете настроить быстрый почтовик для отправки сообщений электронной почты через ПГПС mail() функции.Это позволило бы использовать конфигурацию в php.ini:

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

это и многое другое можно прочитать в More with Symfony - Chapter Emails;)

+0

Большое спасибо Феликс. Еще раз, я благодарен вам. Я внес изменения в параметр хоста (так что он соответствовал моей настройке php.ini), и это сработало. –

+0

BTW, спасибо за ссылку. Это книга, отмеченная сейчас! –

+0

@Показать его ЧЕЛОВ MANКУ: Всегда приятно помочь :) –

1

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

Контроллер:

<?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] 
+0

Спасибо за фрагмент Darmen, я попробую это в ближайшее время (в ближайшие несколько часов) и сообщит вам, если у меня есть успех. Еще раз спасибо –

+0

Привет, Дармен, я получил его для работы с предложением Феликса. Тем не менее, я не смог опробовать ваше предложение, но я уверен, что это сработает (я проголосовал за него). Я действительно проверю его позже в течение этого недельного разрешения. –

+0

@ Показать, как ваша проблема решена. Спасибо за голосование! – Darmen