2009-07-07 8 views
6

Bonjour, J'essaie d'envoyer des emails via gmail depuis le module Zend_Mail. Ceci est mon code: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); 

Erreur:

Attention: stream_socket_enable_crypto() [streams.crypto]: ce flux ne supporte pas le protocole SSL/Crypto dans/Bibliothèque/Zend/Mail/protocole/smtp .php à la ligne 206 Impossible de se connecter via TLS

J'ai essayé de dire à mon fournisseur d'hébergement pour permettre à l'openssl.dll dans phi.ini

Mais ils disent que ce n'est pas n ecessary car le serveur est sous Linux et il n'a pas besoin d'activer openssl.dll pour fonctionner avec TLS ou SSL.

Mon fournisseur d'hébergement est-il en tort ou je fais quelque chose de mal dans mon code?

Merci à l'avance

Fabian

Répondre

0

réglage Essayez ssl: // comme préfixe pour le nom d'hôte et utiliser 465 comme port. Openssl.dll est l'extension windows openssl.

+0

obtenir toujours la même erreur. J'ai smtp.server \t = ssl: //smtp.gmail.com et le port 465 –

12

Sous Linux, vous devez compiler PHP avec le support OpenSSL. http://www.php.net/manual/en/openssl.installation.php

Vous avez besoin de sockets OpenSSL pour PHP et de fonctions de flux pour utiliser TLS. Zend utilise ces fonctions et nécessite donc la même chose.

+0

Comment saurais-je dans phpinfo si Openssl est activé? Tout ce que je vois est ce OpenSSL/0.9.8b dans le apache2handler –

+2

Vous avez réellement besoin de deux choses, OpenSSL et TLS doivent être enregistrés comme un transport de flux/socket. Ceci doit être trouvé sous: Registered Stream Socket Transports Le OpenSSL devrait être trouvé sous son propre en-tête, car il s'agit d'une extension activée. Le fichier apache2handler montre la configuration apache, pas celle de PHP. Vous avez donc OpenSSL compilé sur votre serveur et apache configuré pour l'utiliser, mais vous n'avez probablement pas les extensions PHP OpenSSL compilées avec PHP. Recherchez votre PHP.ini pour OpenSSL et voyez si vous le trouvez. – bucabay

+0

Ouais j'ai seulement: Enregistré Socket Transports \t tcp, udp, unix, udg et aucun en-tête pour l'OpenSSL. Donc je suppose que le problème était du côté de mon hébergeur. merci beaucoup pour votre aide –

6

j'avais un problème similaire est ici ce qui a fonctionné; Utiliser le transport Zend mail et 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); 

Ce produit une erreur: "Autorisation refusée" et aucun courrier a été envoyé. Après trois semaines d'essayer toutes les solutions, je pouvais trouver celle qui fonctionnait changeait: $ transport à; $transport = new Zend_Mail_Transport_Sendmail('[email protected]',$mailhost, $mailconfig);

fonctionne comme prévu ...

+1

Enfin la bonne réponse! Ce n'était pas les paramètres eux-mêmes, mais le fait que Zend_Mail_Smtp ne fonctionne pas avec gmail, alors que Zend_Mail_Transport_Sendmail le fait. – Elie

Questions connexes