2012-04-02 46 views
10

Tôi đã tải xuống SwiftMailer 4.1.6 để gửi email bằng Gmail. Tôi đã viết đoạn mã sau cho mục đích đó.Gửi email bằng Swift Mailer, GMail và PHP, Quyền bị từ chối Lỗi

<?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); 

và nó dẫn đến các lỗi sau:

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 

Điều gì có thể đã đi sai?

+0

thử sử dụng 443 thay vì 465 – maxjackie

+0

@maxjackie Oops! Nó cũng kết quả trong cùng một lỗi: 'Uncaught exception 'Swift_TransportException' với thông báo 'Connection không thể được thiết lập với host smtp.gmail.com [Permission denied # 13]'' – Jomoos

+0

SSL của bạn có hỗ trợ thiết lập PHP không? –

Trả lời

31

Chúng tôi đã gặp sự cố này và nguyên nhân hóa ra là cài đặt SELinux ngăn Apache và do đó PHP mở bất kỳ kết nối ổ cắm đi nào. Chúng tôi đã vô hiệu hóa nó nhưng quên tham số -P để nó được hoàn nguyên trong lần khởi động lại tiếp theo. Nếu bạn đang sử dụng CentOS, RHEL hoặc một số SELinux khác cho phép phân phối, đây có thể là nguyên nhân gây ra sự cố.

Hạn chế kết nối có thể được vô hiệu hóa bằng lệnh này: cổng

setsebool -P httpd_can_network_connect on 
+0

Giải pháp tốt. Làm việc cho tôi. – user2681579

+0

Đã xảy ra sự cố với cài đặt OrangeHRM. Đã cho tôi một lúc để tìm câu trả lời ẩn này. Cảm ơn rất nhiều. – jasperado

+0

Sau một ngày dài tìm kiếm, tôi đã tìm thấy bài đăng này và nó đã giải quyết được vấn đề của tôi với flyspray không gửi email, cảm ơn :) – steabert

Các vấn đề liên quan