2009-07-07 40 views
6

Xin chào, tôi đang cố gắng gửi một số email qua gmail từ mô-đun Zend_Mail. Đây là mã của tôi:Zend Mail Gmail SMTP

$config = array(
    'ssl' => 'tls', 
    'port' => 587, 
    'auth' => 'login', 
    'username' => '[email protected]', 
    'password' => 'password' 
); 
$smtpConnection = new Zend_Mail_Transport_Smtp('smtp.gmail.com', $config); 

Lỗi:

Cảnh báo: stream_socket_enable_crypto() [streams.crypto]: dòng này không hỗ trợ SSL/crypto trong/thư viện/Zend/Mail/Nghị định thư/SMTP .php trên đường dây 206 không thể kết nối thông qua TLS

tôi đã cố gắng nói với nhà cung cấp hosting của tôi để cho phép các openssl.dll trong phi.ini

Nhưng họ nói rằng không phải là n ecessary kể từ khi máy chủ là trong Linux và nó không cần phải kích hoạt openssl.dll để làm việc với TLS hoặc SSL.

Nhà cung cấp dịch vụ lưu trữ của tôi sai hoặc tôi đang làm điều gì sai trong mã của mình.

Cảm ơn trước

Fabian

Trả lời

0

Hãy thử đặt ssl: // là tiền tố cho tên máy và sử dụng 465 như cảng.

+0

Tuy nhận được lỗi tương tự. Tôi có smtp.server \t = ssl: //smtp.gmail.com và cổng 465 –

12

openssl.dll là tiện ích mở rộng openssl của windows.

Trên Linux, bạn cần biên dịch PHP với hỗ trợ OpenSSL. http://www.php.net/manual/en/openssl.installation.php

Bạn cần OpenSSL cho các ổ cắm và chức năng dòng PHP để sử dụng TLS. Zend sử dụng các hàm này và do đó yêu cầu giống nhau.

+0

Làm cách nào tôi biết trong phpinfo nếu Openssl được bật? Tất cả những gì tôi thấy là OpenSSL/0.9.8b này trong apache2handler –

+2

Bạn thực sự cần hai thứ, OpenSSL và TLS nên được đăng ký như là một luồng/vận chuyển socket. Điều này nên được tìm thấy trong: Đã đăng ký Lưu lượng luồng luồng đã đăng ký OpenSSL phải được tìm thấy dưới tiêu đề riêng vì nó là tiện ích mở rộng được bật. Apache2handler hiển thị cấu hình apache, không phải của PHP. Vì vậy, bạn có OpenSSL biên dịch trên máy chủ của bạn và apache cấu hình để sử dụng nó, nhưng bạn có thể không có phần mở rộng PHP OpenSSL biên dịch với PHP. Tìm kiếm PHP.ini của bạn cho OpenSSL và xem bạn có tìm thấy nó không. – bucabay

+0

Vâng, tôi chỉ có: Đã đăng ký Luồng luồng vận chuyển đã đăng ký \t tcp, udp, unix, udg và không có tiêu đề cho OpenSSL. Vì vậy, tôi đoán vấn đề là tất cả ở phía nhà cung cấp dịch vụ lưu trữ của tôi. cảm ơn bạn rất nhiều vì đã giúp đỡ –

6

Tôi đã có một vấn đề tương tự ở đây là những gì làm việc; Sử dụng Zend vận chuyển mail và yahoo smtp:

$mailhost= 'smtp.example.com'; 
$mailconfig = array(
    'auth'  => 'login', 
    'username' => '[email protected]', 
    'password' => 'topsecret', 
    'port'  => '465', 
    'ssl'  => 'ssl' 
); 
$transport = new Zend_Mail_Smtp($mailhost, $mailconfig); 
Zend_Mail::setDefaultTransport($transport); 

này tạo ra một lỗi: "Permission denied" và không có thư đã được gửi. Sau ba tuần thử tất cả các giải pháp, tôi có thể tìm thấy giải pháp đã thay đổi: $ vận chuyển đến; $transport = new Zend_Mail_Transport_Sendmail('[email protected]',$mailhost, $mailconfig);

công trình như mong đợi ...

+1

Cuối cùng là câu trả lời đúng! Nó không phải là các thiết lập cho mỗi người, nhưng thực tế là việc sử dụng Zend_Mail_Smtp không hoạt động với gmail, trong khi Zend_Mail_Transport_Sendmail thì không. – Elie

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