2009-07-07 18 views
6

Ciao Sto cercando di inviare alcune e-mail tramite gmail dal modulo Zend_Mail. Questo è il mio codice: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); 

Errore:

Attenzione: stream_socket_enable_crypto() [streams.crypto]: questo flusso non supporta SSL/crypto in/Libreria/Zend/Mail/Protocollo/Smtp .php on line 206 Impossibile connettersi tramite TLS

ho provato a raccontare il mio fornitore di hosting per consentire l'openssl.dll in phi.ini

Ma dicono che non è n Ecessary poiché il server è in Linux e non è necessario abilitare il file openssl.dll per funzionare con TLS o SSL.

Il mio provider di hosting è sbagliato o sto facendo qualcosa di sbagliato nel mio codice.

Grazie in anticipo

Fabian

risposta

0

Prova Impostazione SSL: // come prefisso per il nome dell'host e utilizzare 465 come porta.

+0

Ancora ottenere lo stesso errore. Ho smtp.server \t = ssl: //smtp.gmail.com e porta 465 –

12

openssl.dll è l'estensione di windows openssl.

Su Linux è necessario compilare PHP con il supporto OpenSSL. http://www.php.net/manual/en/openssl.installation.php

È necessario OpenSSL per socket PHP e funzioni di streaming per utilizzare TLS. Zend usa queste funzioni e quindi richiede lo stesso.

+0

Come faccio a sapere in phpinfo se Openssl è abilitato? Tutto quello che vedo è questo OpenSSL/0.9.8b nel apache2handler –

+2

In realtà hai bisogno di due cose, OpenSSL e TLS dovrebbero essere registrati come un trasporto stream/socket. Questo dovrebbe essere trovato sotto: Transito registrato Socket Transports OpenSSL dovrebbe essere trovato sotto la propria intestazione poiché è un'estensione abilitata. Apache2handler mostra la configurazione di apache, non quella di PHP. Quindi hai OpenSSL compilato sul tuo server e apache è configurato per usarlo, ma probabilmente non hai le estensioni PHP OpenSSL compilate con PHP. Cerca il tuo PHP.ini per OpenSSL e vedi se lo trovi. – bucabay

+0

Sì, ho solo: Transporti registrati Socket Transports \t tcp, udp, unix, udg e nessuna intestazione per OpenSSL. Quindi immagino che il problema riguardasse il mio provider di hosting. grazie mille per il vostro aiuto –

6

stavo avendo un problema simile qui è ciò che ha funzionato; Utilizzando Zend trasporto di posta e 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); 

Questo ha prodotto un errore: "Permesso negato" e nessuna mail è stata inviata. Dopo tre settimane di provare tutte le soluzioni, ho potuto trovare quello che funzionava stava cambiando: $ trasporto a; $transport = new Zend_Mail_Transport_Sendmail('[email protected]',$mailhost, $mailconfig);

funziona come previsto ...

+1

Finalmente la risposta giusta! Non erano le impostazioni di per sé, ma il fatto che l'utilizzo di Zend_Mail_Smtp non funzionasse con gmail, mentre Zend_Mail_Transport_Sendmail lo fa. – Elie

Problemi correlati