CodeIgniter et SMTP de Gmail Timeout avec SSL scoket
Je utiliser le SMTP de Gmail pour envoyer des emails à partir de l'application web que j'ai écrit à l'aide de CodeIgniter avec PHP 5.3 sans problèmes jusqu'à récemment. C'est l'extrait de mon code:
$config['protocol'] = 'smtp';
$config['smtp_host'] = $this->smtp_host;
$config['smtp_port'] = $this->smtp_port;
$config['smtp_user'] = $this->smtp_username;
$config['smtp_pass'] = $this->smtp_password;
$config['mailtype'] = $this->email_type;
$config['newline'] = "\r\n";
$this->load->library('email', $config);
$this->email->from($email_sender, $email_sender_name);
$this->email->to($email_to);
$this->email->subject($message_subject);
$this->email->message($message_content);
$result = $this->email->send();
Lorsque j'utilise "ssl://smtp.gmail.com"
d'hôte et de 465
comme le port, j'ai eu cette erreur dans le journal:
DEBUG - 2010-08-06 17:19:24 --> Email Class Initialized
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fsockopen(): unable to connect to ssl://smtp.googlemail.com:465 (Connection timed out) /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1652
DEBUG - 2010-08-06 17:19:45 --> Language file loaded: language/english/email_lang.php
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:19:45 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
Je ne sais pas si cette situation est liée, mais avant de me mettre à jour mon PHP en PHP 5.3
, du même code, a très bien fonctionné. Si c'est le pare-feu ou de problèmes de connexion internet, je peux toujours envoyer des e-mail à l'aide de smtp de gmail dans Thunderbird.
Après je cherche dans les différents forums, j'ai eu un conseils pour faire ce test:
$ openssl s_client -starttls smtp -crlf -connect smtp.gmail.com:587
CONNECTED(00000003)
depth=1 /C=US/O=Google Inc/CN=Google Internet Authority
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
i:/C=US/O=Google Inc/CN=Google Internet Authority
1 s:/C=US/O=Google Inc/CN=Google Internet Authority
i:/C=US/O=Equifax/OU=Equifax Secure Certificate Authority
---
Server certificate
-----BEGIN CERTIFICATE-----
...cut...
-----END CERTIFICATE-----
subject=/C=US/ST=California/L=Mountain View/O=Google Inc/CN=smtp.gmail.com
issuer=/C=US/O=Google Inc/CN=Google Internet Authority
---
No client certificate CA names sent
---
SSL handshake has read 1901 bytes and written 335 bytes
---
New, TLSv1/SSLv3, Cipher is RC4-MD5
Server public key is 1024 bit
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : RC4-MD5
Session-ID: 2CA08CABBE21653238292DEDF30D119428970FAA284263C92480DA5283AFE013
Session-ID-ctx:
Master-Key: B3F6D4423DC14E24E894D7AD7107B4A640839F2BF90233714EC5BF0D139611E65655902B50AEA3BD67373A21338526B0
Key-Arg : None
Start Time: 1281086948
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
---
250 ENHANCEDSTATUSCODES
tout en utilisant le même outil de test de ssl
connexion me donner de délai d'attente:
$ openssl s_client -ssl2 -crlf -connect smtp.gmail.com:465
connect: Connection timed out
connect:errno=110
J'essaie d'utiliser "tls://smtp.gmail.com"
d'hôte et de 587
comme port dans mon code ci-dessus, mais maintenant, je reçois ce message d'erreur:
DEBUG - 2010-08-06 17:26:10 --> Email Class Initialized
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fsockopen(): SSL operation failed with code 1. OpenSSL Error messages:
error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1652
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fsockopen(): Failed to enable crypto /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1652
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fsockopen(): unable to connect to tls://smtp.googlemail.com:587 (Unknown error) /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1652
DEBUG - 2010-08-06 17:26:10 --> Language file loaded: language/english/email_lang.php
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fwrite() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1795
ERROR - 2010-08-06 17:26:10 --> Severity: Warning --> fgets() expects parameter 1 to be resource, boolean given /data/donny/Projects/workspace/codeigniter/libraries/Email.php 1818
- Pouvez-vous m'aider à trouver ce que l'
cause de délai de connexion lors de l'
Je vais essayer de vous connecter à
ssl://smtp.gmail.com:465
- Deuxième,
puis-je utilisertls
dansPHP 5.3
? Si oui, pouvez
- vous me montrer le code, donc je peux mettre
dans CodeIgniter et de le tester.
Grâce.
OriginalL'auteur Donny Kurnia | 2010-08-06
Vous devez vous connecter pour publier un commentaire.
Si vous êtes arrivés à cette page à partir Google.com à la recherche pour plus de détails sur la sécurité de messagerie SMTP, découvrez ce patch à l'IC Forums.
http://codeigniter.com/forums/viewthread/158882/
Mon SMTP du fournisseur (système d'Échange) n'accepte pas les connexions SSL et nécessite l'utilisation de SMTP sur TLS à la place (STARTTLS, RFC 3207). Voici un petit patch pour la classe Email qui ajoute le support pour cela. Il est écrit contre 1.7.2. Si cela est utile à d'autres, vous êtes la plupart de bienvenue à l'intégrer dans une future version.
Utilisation:
Spécifier les paramètres du serveur en tant que régulier serveur SMTP (tcp://servername, généralement le port 25 ou 587).
Activer le nouveau paramètre dans la configuration ($config[‘starttls’] = TRUE;)
Dépend TLS être disponibles (par exemple, figurent dans la " Enregistré Socket de Flux de Transports de la section de la fonction phpinfo()).
Eu le même problème et 'smtp_timeout' => 30, cela fonctionne parfaitement
OriginalL'auteur jjwdesign
Selon le PHP docu SSL et TLS ont été ajoutées dans la version 4.3.
http://de2.php.net/manual/de/function.fsockopen.php
Donc, ils doivent fonctionner en général.
J'ai trouvé celui-ci et cela a fonctionné pour moi:
http://tareq.wedevs.com/2010/01/sending-mail-with-gmails-smtp-server-with-fsockopen/
Peut-être que vous pourriez essayer ce script trop.
OriginalL'auteur JochenJung