2012-04-02 15 views
10

Pobrałem plik SwiftMailer 4.1.6 do wysyłania wiadomości e-mail przy użyciu Gmaila. W tym celu napisałem następujący kod.Wysyłanie wiadomości e-mail za pomocą Swift Mailer, GMail i PHP, błąd odmowy uprawnień

<?php 

require_once 'swiftmailer/lib/swift_required.php'; 

$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, "ssl") 
     ->setUsername('[email protected]') 
     ->setPassword('***********'); 

$mailer = Swift_Mailer::newInstance($transport); 
$message = Swift_Message::newInstance('Wonderful Subject') 
     ->setFrom(array('[email protected]' => 'Jomit Jose')) 
     ->setTo(array('[email protected]' => 'Jomit Jose')) 
     ->setBody('This is the text of the mail send by Swift using SMTP transport.'); 

$numSent = $mailer->send($message); 
printf("Sent %d messages\n", $numSent); 

i to doprowadziło do następującego błędu:

Fatal error: Uncaught exception 'Swift_TransportException' with message 
'Connection could not be established with host smtp.gmail.com 
[Permission denied #13]' in 
/home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php:266 

Stack trace: 

#0 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php(66): 
Swift_Transport_StreamBuffer->_establishSocketConnection() 

#1 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php(117): 
Swift_Transport_StreamBuffer->initialize(Array) 

#2 /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Mailer.php(79): 
Swift_Transport_AbstractSmtpTransport->start() 

#3 /home/jomit/public_html/email_test/test.php(16): 
Swift_Mailer->send(Object(Swift_Message)) 

#4 {main} thrown in /home/jomit/public_html/email_test/swiftmailer/lib/classes/Swift/Transport/StreamBuffer.php on line 266 

Co mogło pójść nie tak?

+0

Użyj 443 zamiast 465 – maxjackie

+0

@maxjackie Ups Powoduje to również ten sam błąd: "Niepowodzenie wyjątku" Swift_TransportException "z komunikatem" Nie można ustanowić połączenia z hostem smtp.gmail.com [Odmowa uprawnień # 13] '' – Jomoos

+0

Czy konfiguracja PHP obsługuje protokół SSL? –

Odpowiedz

31

Mieliśmy ten problem, a przyczyną okazało się ustawienie SELinux, które uniemożliwia Apache i tym samym PHP od otwierania jakichkolwiek wychodzących połączeń gniazd. Wyłączyliśmy go, ale zapomnieliśmy o parametrze -P, więc zostało ono przywrócone podczas następnego restartu. Jeśli używasz CentOS, RHEL lub jakiejś innej dystrybucji włączonej przez SELinux, jest to prawdopodobna przyczyna problemu.

Ograniczenie połączenie może być wyłączona z tym poleceniem: port

setsebool -P httpd_can_network_connect on 
+0

Dobre rozwiązanie. Dla mnie. – user2681579

+0

Miał ten problem z instalacją OrangeHRM. Zajęło mi trochę czasu, aby znaleźć tę ukrytą odpowiedź. Wielkie dzięki. – jasperado

+0

Po długim dniu poszukiwań, znalazłem ten post i rozwiązał mój problem z flyspray nie wysyłając e-maile, dziękuję :) – steabert

Powiązane problemy