2009-07-07 28 views
6

Hola, estoy tratando de enviar algunos correos electrónicos a través de gmail desde el módulo Zend_Mail. Este es mi código: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); 

error:

Advertencia: stream_socket_enable_crypto() [streams.crypto]: esta corriente no es compatible con SSL/cripto en/Library/Zend/correo/Protocolo/SMTP .php en la línea 206 no se puede conectar a través de TLS

he intentado decirle a mi proveedor de hosting para que el openssl.dll en phi.ini

Pero dicen que no es n necesario ya que el servidor está en Linux y no necesita habilitar el openssl.dll para trabajar con TLS o SSL.

Mi proveedor de hosting está equivocado o estoy haciendo algo mal en mi código.

Gracias de antemano

Fabian

Respuesta

0

Intenta establecer ssl: // como prefijo para el nombre de host y utilizar 465 como puerto.

+0

Aún así conseguir el mismo error. Tengo smtp.server \t = ssl: //smtp.gmail.com y el puerto 465 –

12

openssl.dll es la extensión de windows openssl.

En Linux necesita compilar PHP con soporte OpenSSL. http://www.php.net/manual/en/openssl.installation.php

Necesita OpenSSL para sockets de PHP y funciones de transmisión para usar TLS. Zend usa estas funciones y por lo tanto requiere lo mismo.

+0

¿Cómo sabría en phpinfo si Openssl está habilitado? Todo lo que veo es este OpenSSL/0.9.8b en apache2handler –

+2

Realmente necesita dos cosas, OpenSSL y TLS deben registrarse como un transporte de secuencia/socket. Esto se debe encontrar en: Registros de sockets de registros registrados El código de OpenSSL debe encontrarse debajo de su propio encabezado, ya que es una extensión habilitada. Apache2handler muestra la configuración de Apache, no PHP. Entonces tiene OpenSSL compilado en su servidor y Apache configurado para usarlo, pero probablemente no tenga las extensiones de PHP OpenSSL compiladas con PHP. Busque en su PHP.ini para OpenSSL y vea si lo encuentra. – bucabay

+0

Sí, solo tengo: Registered Stream Socket Transports \t tcp, udp, unix, udg y sin encabezado para OpenSSL. SO Supongo que el problema estaba en mi lado del proveedor de hosting. muchas gracias por su ayuda –

6

que estaba teniendo un problema similar aquí es lo que ha funcionado; uso de Zend transporte de correo SMTP y Yahoo:

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

Esto produjo un error: "Permiso denegado" y el correo no fue enviado. Después de tres semanas de probar todas las soluciones, pude encontrar que la que funcionaba estaba cambiando: $ transport to; $transport = new Zend_Mail_Transport_Sendmail('[email protected]',$mailhost, $mailconfig);

funciona como se espera ...

+1

¡Finalmente la respuesta correcta! No fueron los ajustes en sí mismos, sino el hecho de que usar Zend_Mail_Smtp no funciona con gmail, mientras que Zend_Mail_Transport_Sendmail lo hace. – Elie

Cuestiones relacionadas