Foros del Web » Programando para Internet » PHP »

phpmailer va a acabar conmigo

Estas en el tema de phpmailer va a acabar conmigo en el foro de PHP en Foros del Web. Hola a todos. Posteo este mensaje ya totalmente desesperado y esperando una ayuda pq es q ya no puedo mas con los emails de los...........huevos. ...
  #1 (permalink)  
Antiguo 18/12/2010, 08:31
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 9 meses
Puntos: 11
phpmailer va a acabar conmigo

Hola a todos.

Posteo este mensaje ya totalmente desesperado y esperando una ayuda pq es q ya no puedo mas con los emails de los...........huevos.

He elegido PHPMailer para el envio de emails. La "configuración" juraría que esta bien (pero va a ser que en algo me estoy equivocando). Los detalles:

php.ini: esta descomentado el .dll requerido (extension=php_openssl.dll)

carpeta "/system32" : estan copiados los tres ficheros .dll (libeay32.dll,ssleay32.dll,php_openssl.dll)

He abierto los puertos (465 y 587).
Me he asegurado de que el antivirus no me estaba tocando las narices. (desactivandolo, al igual que el firewall, por completo).

Hasta aqui, el error era uno del tipo: "Warning: fsockopen() [function.fsockopen]:...blablabla on line 105 en el archivo class.smtp.php"

Despues de varios dias leyendo docenas de post con este tipo de problemas di con este post:

http://www.forosdelweb.com/f18/phpmailer-smtp-301029/

e hice lo que decia este chaval:

class.smtp.php
linea 127:

Código:
if(empty($port)) {
      $port = $this->SMTP_PORT;
    }

$host = "ssl://smtp.gmail.com";
$port = 465;

    // connect to the smtp server
    $this->smtp_conn = @fsockopen($host,    // the host of the server
                                 $port,    // the port to use
                                 $errno,   // error number if any
                                 $errstr,  // error message if any
                                 $tval);   // give up after ? secs
Casi tengo un orgasmo cuando pruebo y no me da ningun error.....pero me doy cuenta de que es un orgasmo fingido cuando compruebo que no ha llegado nada, ni a la carpeta de spam ni na....

El codigo php que utilizo es el siguiente:

require("../../PHPMailer_v5.1/class.phpmailer.php");
$mail = new phpmailer();
//Indicamos a la clase phpmailer donde se encuentra la clase smtp
$mail->PluginDir = "";
//Indicamos que vamos a conectar por smtp
$mail->Mailer = "smtp";
//Nuestro servidor smtp. Como ves usamos cifrado ssl
$mail->Host = "ssl://smtp.gmail.com";
//Puerto de gmail 465
$mail->Port="465";
$mail->SMTPSecure = 'ssl';
//Le indicamos que el servidor smtp requiere autenticación
$mail->SMTPAuth = true;
//Le decimos cual es nuestro nombre de usuario y password
$mail->Username = "[email protected]";
$mail->Password = "XXXXXXXXX";
//Indicamos cual es nuestra dirección de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->From = "[email protected]";
$mail->FromName = "Nombre emisor";
//El valor por defecto de Timeout es 10, le voy a dar un poco mas
$mail->Timeout=20;
//Indicamos cual es la dirección de destino del correo.
$mail->AddAddress("[email protected]");
//Asignamos asunto
$mail->Subject = "Prueba desde phpMailer";
//Cuerpo del mensaje. Puede contener html
$mail->Body = "Cuerpo de mi mensaje";
//Si no admite html
$mail->AltBody = "Cuerpo de mensaje solo texto";
//Envia en email
$resultado = $mail->Send();

He probado con mails desde gmail a yahoo y desde gmail al propio gmail. Ambos resultados infructuosos.

Ahora llega lo cachondo. Cuando se supone que "ha salido todo bien" y veo q en realidad nanai, pongo el cortafuegos, pongo el antivirus, lo mismo: todo va bien pero nada va bien. Cierro incluso los puertos y me sigue diciendo que todo va bien.....
Para mas descojone me conecte a otra red (abierta) que doy por supuesto no tendria ese puerto abierto (vamos....que casualidad), y me sigue diciendo que todo guay.....


y ya no se que hacer....

Alguien me puede echar un cable por favor?????

Ademas, he leido movidas respecto al openssl y Microsoft Visual C++ 2008 y despues de haberlos instalado me decian cosas que eran de risa, pero vamos, creo q realmente no me hacen falta, asi que he decidido no poner "estas historias" pq es que es pa descojonarse. Si realmente necesitais que os cuente estas otras historias, lo hare encantado, pero debeis estar "preparados para ello".


1 saludo y muchisimas gracias. DE VERDAD.

Última edición por oms02; 18/12/2010 a las 17:22
  #2 (permalink)  
Antiguo 18/12/2010, 17:27
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 9 meses
Puntos: 11
Respuesta: phpmailer va a acabar conmigo

perdonad, me equivoque al ponerle negrita al "primer parrafo" del codigo, cuando lo insertado era justo lo de debajo. ahora esta correcto.

1 saludo y gracias de nuevo, de verdad.
  #3 (permalink)  
Antiguo 18/12/2010, 17:53
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: phpmailer va a acabar conmigo

A ver... probé lo que has mencionado, jamás en mi vida había mandado un mensaje con PHPMailer.

1.- Bueno, como te decía, descomenté la línea php_openssl.dll (no copié nada a ningún lugar).
2.- Fuí a class.smtp.php, busqué la línea que comentabas en el mensaje :

Código PHP:
Ver original
  1. $this->smtp_conn = fsockopen($host,    // the host of the server
  2.                                  $port,    // the port to use
  3.                                  $errno,   // error number if any
  4.                                  $errstr,  // error message if any
  5.                                  $tval);   // give up after ? secs

y le quité el arroba, para saber que error lanzaba.

Para mi sorpresa, me lanzó el siguiente error :

Cita:
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Host desconocido. in C:\...\TestPHPMailer\PHPMailer_v5.1\class.smtp.php on line 132

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://ssl://smtp.gmail.com:465 (php_network_getaddresses: getaddrinfo failed: Host desconocido. ) in C:\..\TestPHPMailer\PHPMailer_v5.1\class.smtp.php on line 132
SMTP Error: Could not connect to SMTP host.
Un error bastante extraño... pero noté lo siguiente :

Cita:
unable to connect to ssl://ssl://smtp.gmail.com:465
Lo cual no me cuadraba, así que fuí al index.php, donde pegué tu código para enviar correos, y a la variable $mail->Host, le quité el ssl:// que contenía, y quedó de esta manera :

Código PHP:
Ver original
  1. $mail->Host = "smtp.gmail.com";

Guardé, actualicé, revisé mi correo (porque cambié las opciones, para probar si llegaba a mi correo) y para mi sopresa, el correo llegó, así que deduje que tu problema es el ssl:// que contiene la variable.

Espero te sirva. Saludos.

Moraleja o lección de vida : Nunca hagas caso omiso de los errores. Nunca los ocultes, lee el error, busca la solución y soluciónalo. Aunque se que el código de PHPMailer viene así por defecto, lo cual es un grave error. Pero debes sacar una lección de esto . Nos vemos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #4 (permalink)  
Antiguo 21/12/2010, 15:57
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 9 meses
Puntos: 11
Respuesta: phpmailer va a acabar conmigo

Hola a todos (y en especial a spider_boy).

Lo 1º de todo, muchisimas gracias por interesarte(ros) en mi problema.

Sigo en "las mismas".

He probado tu metodo, spider, pero si me "como" el "ssl://" resulta que se queda mudo total. Despues de un minuto me dice:

Fatal error: Maximum execution time of 60 seconds exceeded in C:\wamp\www\PHPMailer_v5.1\class.smtp.php on line 797

Ahora, sin quitar ssl:// ahora el problema es:

Código:
Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://smtp.gmail.com:465 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?) in C:\wamp\www\PHPMailer_v5.1\class.smtp.php on line 132

me voy a cortar las venas, .......

alguna idea?? acepto lo que sea.....lo que sea, de verdad.

1 saludo y MUCHISIMAS GRACIAS.
  #5 (permalink)  
Antiguo 21/12/2010, 16:04
 
Fecha de Ingreso: diciembre-2010
Mensajes: 32
Antigüedad: 13 años, 4 meses
Puntos: 1
Respuesta: phpmailer va a acabar conmigo

Probaste habilitar el ssl_module en apache?
  #6 (permalink)  
Antiguo 21/12/2010, 18:11
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: phpmailer va a acabar conmigo

Que extraño.

Yo cuando probé el tema, solo habilité la extensión php_openssl.dll en el php.ini, no hice nada con apache. Y me funcionó de inmediato.

Luego de habilitar la extensión php_openssl.dll, ¿te aseguraste de reiniciar apache?

Si copias y pegas parte del error en google, encontrarás mucha información.

Saludos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #7 (permalink)  
Antiguo 21/12/2010, 20:18
 
Fecha de Ingreso: junio-2008
Mensajes: 165
Antigüedad: 15 años, 10 meses
Puntos: 6
Respuesta: phpmailer va a acabar conmigo

Te aconsejo que primero te informes si tu hosting acepta la class phpmailer, a mi en el hosting 1and1 no me lo aceptan les pregunte y me dijeron que lo tenian capado a ese tipo de scripts....y tube que usar la funcion mail de php.
  #8 (permalink)  
Antiguo 24/12/2010, 05:45
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 9 meses
Puntos: 11
Respuesta: phpmailer va a acabar conmigo

He habilitado php_openssl.dll en el otro archivo php.ini (tambien el SMTP y el puerto). El error mas tipico ahora es el siguiente (copiado del log de errores del server (apache)):

Warning: fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: SSL: connection timeout

Warning: fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: Failed to enable crypto

Warning: fsockopen() [<a href='function.fsockopen'>function.fsockopen</a>]: unable to connect to ssl://smtp.gmail.com:465 (Unknown error)

No hago mas que mirar y mirar por la red a ver que encuentro pero hay respuestas de todo tipo. No hago mas que hacer mas y mas cambios, combinaciones de cambios. Ahora esto lo cambio, ahora esto no, ahora los 2, ahora este otro....y asi, .....pero nada...

No obstante (ojala vayan por aqui los tiros),me he fijado q en el log de errores aparece siempre antes de estos warnings la siguiente linea:

Child 3372: Starting thread to listen on port 80.

....puede ser esto el origen del problema???


1 saludo y que paseis todos buenos dias.

Gracias.
  #9 (permalink)  
Antiguo 24/12/2010, 06:22
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: phpmailer va a acabar conmigo

¿Lo estás probando en local, o usas un servidor gratuito? ¿Has probado si te funciona con hotmail, yahoo, etc? ¿Qué versión de PHP tienes?

Mira, te digo mi configuración, que es prácticamente la que viene por defecto :

Versión PHP : 5.2.14
Versión php_openssl.dll : 5.2.14.14

php.ini
Cita:
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

...

extension=php_openssl.dll // descomentado obviamente
httpd.conf (Apache)
Cita:
#LoadModule ssl_module modules/mod_ssl.so // comentado

... // más abajo...

# Secure (SSL/TLS) connections
#Include conf/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
# starting without SSL on platforms with no /dev/random equivalent
# but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
No tengo nada más. No he hecho nada más.


Otra opción que podrías probar, es darle más tiempo de espera a la aplicación. Ve a class.smtp.php, y busca la línea

Código PHP:
  public function Connect($host$port 0$tval 30) { 
cambia $tval = 30, por $tval = 60, o un número mayor (en segundos), e intenta de nuevo, ya que en el error de apache, la conexión ssl superó el tiempo de espera límite.

También entra a esta página y verifica que tus puertos realmente estén abiertos (el que no tengas un firewall activado o un antivirus corriendo no implica que los puertos estén abiertos) : http://www.pcwintech.com/simple-port-tester

Es un pequeño programita, donde le agregas el puerto que será testeado (para TCP y UDP). De esta manera sabrás si está cerrado o no, aunque esto es necesario si usas router, pero podrías tener alguna otra aplicación corriendo que utilice el puerto.

De verdad espero soluciones tu problema. Mi ayuda no es más que una ayuda superficial. Algo debe estar pasando en tu máquina, y me es imposible verlo, así que tenemos que agotar todas las opciones.

Saludos.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Última edición por spider_boy; 24/12/2010 a las 06:29
  #10 (permalink)  
Antiguo 27/12/2010, 13:59
 
Fecha de Ingreso: junio-2010
Mensajes: 373
Antigüedad: 13 años, 9 meses
Puntos: 11
Respuesta: phpmailer va a acabar conmigo

hola spider.

No quiero q pienses que paso del tema (o q lo he solucionado XD).

Estos dias no estoy en casa y la conexion que tengo no me permite mirar esto de los puertos, etc...

En cuanto vuelva lo 1º que voy a hacer es mirar este asunto. Estoy mas que ansioso por probar lo q me comentas.

1 saludo y muchas gracias por la ayuda.

Que todos paseis unos buenos dias.

Etiquetas: phpmailer
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:27.