غير قادر على إرسال البريد في Symfony 1.31
-
25-09-2019 - |
سؤال
أحاول إرسال بريد إلكتروني باستخدام الطريقة التالية في فصل الإجراء الخاص بي:
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 log sfwebdebuglogger.class.php على السطر 78 مكدس الاتصال: 0.0003 66216 1. {main} (
هل هذه الفكرة تشير إلى أي شيء على الإطلاق لأي شخص؟ هل تمكن أي شخص بالفعل من إرسال بريد إلكتروني باستخدام 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
المحلول
لديك تكوين 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: ~
ولكن يمكنك أيضًا إعداد Swift Mailer لإرسال رسائل البريد الإلكتروني عبر PHPs mail()
وظيفة. هذا من شأنه أن يستخدم التكوين الخاص بك في php.ini
:
all:
mailer:
class: sfMailer
param:
logging: %SF_LOGGING_ENABLED%
charset: %SF_CHARSET%
delivery_strategy: realtime
transport:
class: Swift_MailTransport
هذا وأكثر من ذلك بكثير يمكن قراءته المزيد مع Symfony - رسائل البريد الإلكتروني الفصل ;)
نصائح أخرى
لقد تمكنت من إرسال البريد الإلكتروني مع Symfony 1.3.1.
لا أعرف حقًا ما يحدث في طلبك ، ولكن هنا هو الكود الخاص بي و conf ، هذا يعمل بشكل رائع بالنسبة لي.
مراقب:
<?php
...
$message = Swift_Message::newInstance()
->setFrom('sender@foo.com')
->setTo('recipient@bar.com')
->setSubject('subject')
->setBody('body')
->setContentType('text/html');
$this->getMailer()->send($message);
...
المصانع:
all:
mailer:
class: sfMailer
param:
delivery_strategy: spool
spool_class: Swift_FileSpool
spool_arguments: [/path/to/swift_spool]