2013-03-17 2 views
0

Я работаю над проектом Silex, и я пытаюсь отправить электронное письмо с помощью поставщика Swiftmailer, но всегда получаю внутреннюю ошибку сервера (500).Ошибка внутреннего сервера с использованием Swiftmailer на Silex

Регистрация:

$app->register(new Silex\Provider\SwiftmailerServiceProvider(), array(
     'swiftmailer.options' => array(
      'host' => 'smtp.gmail.com', 
      'port' => '465', 
      'username' => 'my_email', 
      'password' => 'my_password') 

    )); 

Если я называю почтовик $ приложение [ 'мэйлера'] бросить внутреннюю ошибку сервера.

Если я попытаюсь на примере документации я получил внутреннюю ошибку сервера:

$app->post('/feedback', function() use ($app) { 
    $request = $app['request']; 

    $message = \Swift_Message::newInstance() 
     ->setSubject('[YourSite] Feedback') 
     ->setFrom(array('[email protected]')) 
     ->setTo(array('[email protected]')) 
     ->setBody($request->get('message')); 

    $app['mailer']->send($message); 

    return new Response('Thank you for your feedback!', 201); 
}); 

Я не знаю, в чем проблема, у меня нет никаких проблем с другими поставщиками.

Любые идеи?

+2

Ну, в чем ошибка? Проверьте журналы своего веб-сервера. – ceejayoz

+0

Вы можете установить '$ app [" debug "]' в true, чтобы получить подробное сообщение об ошибке и трассировку стека. – Maerlyn

+0

Возможно, вы найдете решение здесь: http://stackoverflow.com/a/34033427/5628225 – PFPRO

ответ

0

Помогло бы добавить следующие записи в массив 'swiftmailer.options'? Gmail по умолчанию использует SSL порт 465.

'encryption' => 'ssl', 
'auth_mode' => 'login', 

[Update] Если определить пространство имен в вашем коде, нужно добавить '\' перед Silex \ Provider ..

$this->register(new Silex\Provider\SwiftmailerServiceProvider(), array(

до

$this->register(new \Silex\Provider\SwiftmailerServiceProvider(), array(
+0

Я проверил, но это то же самое, всегда бросайте ERROR 500 – aaaaaasdssss

+0

В sliex ​​вы можете поймать ошибку, используя $ app-> error (function() {...}). Не могли бы вы сбросить трассировку стека, используя $ e-> getTraceAsString()? –

+0

Как изменить имя хоста на smtp.google.com на smtp.googlemail.com? Кто-то сказал в определенной стране, что последний используется. –