2011-06-10 23 views
9

deseo usar gmail smtp para enviar información del usuario al correo electrónico registrado.gmail smtp no funciona en mi hosting usando codeigniter framework

El código que estoy utilizando está funcionando bien en mi servidor local, pero cuando cambié a alojamiento compartido, aparece el siguiente error.

A PHP Error was encountered 
Severity: Warning 

Message: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.googlemail.com:465 (Connection timed out) 

Filename: libraries/Email.php 

Line Number: 1652 

A PHP Error was encountered 
Severity: Warning 

Message: fwrite(): supplied argument is not a valid stream resource 

Filename: libraries/Email.php 

Line Number: 1795 

.... (more error msg here) 

An Error Was Encountered 
The following SMTP error was encountered: 110 Connection timed out 
Unable to send data: AUTH LOGIN 
Failed to send AUTH LOGIN command. Error: 
Unable to send data: MAIL FROM: 


from: 
The following SMTP error was encountered: 
Unable to send data: RCPT TO: 

to: 
The following SMTP error was encountered: 
Unable to send data: DATA 

.... (more error msg here) 

aquí está mi correo electrónico config

$pass = $this->generatePassword('6'); 

$config = Array(
    'protocol' => 'smtp', 
    'smtp_host' => 'ssl://smtp.googlemail.com', 
    'smtp_port' => 465, 
    'smtp_timeout'=>'30', 
    'smtp_user' => '[email protected]', 
    'smtp_pass' => 'mypassword', 
    'mailtype' => 'html', 
    'charset' => 'iso-8859-1' 
); 
$this->load->library('email', $config); 
$this->email->set_newline("\r\n"); 

$this->email->from('[email protected]','Title'); 
$this->email->to($this->input->post('email')); 

$this->email->subject('Subject here'); 
$this->email->message('Your login username is '.$this->input->post('username').'<br/>'.'Password is '.$pass); 

if (!$this->email->send()){ 
    show_error($this->email->print_debugger()); 
}else{ echo 'YEAH!!!';} 

trato de comprobar mi parte de alojamiento openssl si está activado o no. y me encontré con este

openssl soporte para OpenSSL habilitado
OpenSSL versión de OpenSSL 0.9.8e-FIPS-RHEL5 01 Jul 2008

Si se habilita OpenSSL. ¿Cuál será el error en mi código?

Empiezo a sentir frustración por el uso de mi servidor local para desarrollar y cuando se cargó en el alojamiento compartido, salió con un montón de errores.

¡Cualquier ayuda sería apreciada! THX en avanzado

Respuesta

15

Parece que su puerto ur ssl en el alojamiento compartido está cerca, use este código para verificar si está abierto.

$fp = fsockopen("www.google.com", 80, &$errno, &$errstr, 10); // work fine 
if (!$fp) 
    echo "www.google.com - $errstr ($errno)<br>\n"; 
else 
    echo "www.google.com - ok<br>\n"; 


$fp = fsockopen("smtp.gmail.com", 465, &$errno, &$errstr, 10); // NOT work 
if (!$fp) 
    echo "smtp.gmail.com 465 - $errstr ($errno)<br>\n"; 
else 
    echo "smtp.gmail.com 465 - ok<br>\n"; 


$fp = fsockopen("smtp.gmail.com", 587, &$errno, &$errstr, 10); // NOT work 
if (!$fp) 
    echo "smtp.gmail.com 587 - $errstr ($errno)<br>\n"; 
else 
    echo "smtp.gmail.com 587 - ok<br>\n"; 
+1

Hola, tq por su respuesta. Acabo de preguntarle a mi proveedor de alojamiento compartido. y dijeron que no habilitaron el puerto 465, y ahora lo habilitan. Intento utilizar Joomla 1.6 para probar el smtp de gmail que funciona ahora. pero intento 2 probarlo en mi web codeigniter, no hay respuesta de mi sitio cuando hago clic en el botón de registro. y la página es como seguir cargando ... ¿significa que nid 2 borrar las cookies o restablecer algo? –

+0

ok ... cierro el navegador y vuelvo a abrir. y ahora funciona. Gracias !! –

+0

gracias por ese código –

4

hay actualización para escritura de la prueba en la más reciente versión de php :

<?php 

    $fp = fsockopen("www.google.com", 80, $errno, $errstr, 10); // work fine 
    if (!$fp) 
     echo "www.google.com - $errstr ($errno)<br>\n"; 
    else 
     echo "www.google.com - ok<br>\n"; 


    $fp = fsockopen("smtp.gmail.com", 465, $errno, $errstr, 10); // NOT work 
    if (!$fp) 
     echo "smtp.gmail.com 465 - $errstr ($errno)<br>\n"; 
    else 
     echo "smtp.gmail.com 465 - ok<br>\n"; 


    $fp = fsockopen("smtp.gmail.com", 587, $errno, $errstr, 10); // NOT work 
    if (!$fp) 
     echo "smtp.gmail.com 587 - $errstr ($errno)<br>\n"; 
    else 
     echo "smtp.gmail.com 587 - ok<br>\n"; 



?> 
Cuestiones relacionadas