PHP - problema envio correo gmail

   
Vista:

problema envio correo gmail

Publicado por juan pablo (9 intervenciones) el 23/02/2015 21:23:18
hola gente estoy teniendo un inconveniente para utilizar phpmailer con gmail, he buscado y en todos lados aparece el mismo script, no me doy cuenta en que estoy fallando o que puede pasar, les dejo el codigo que tengo para enviar el mail:

1
2
3
4
5
6
7
8
9
10
/*DATOS DE CONFIG MAILING DEFINO CONSTANTES*/
define("_MAIL_SMTP_HOST","smtp.gmail.com");
define("_MAIL_SMTP_SECURE","ssl");
 
define("_MAIL_SMTP_PORT","465");
 
define("_MAIL_SMTP_USER","user@gmail.com");
define("_MAIL_SMTP_PASS","pass");
define("_MAIL_SMTP_FROM","user@gmail.com");
define("_MAIL_SMTP_FROMNAME","Sistema te tickets");

y la siguiente es la funcion enviar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function Enviar_Correo_ticket($datos)   {
 
	$titulo="[#".$datos[ticket][id_tickets_hash]."] : ".$datos[ticket][asunto_tickets] ;
 
	$para=$datos['para'];
	$para_nombre=$datos['para_nombre'];
 
 
		$mail = new PHPMailer();
		$mail->IsSMTP(); // vamos a conectarnos a un servidor SMTP
		$mail->Host = _MAIL_SMTP_HOST; // direccion del servidor
        $mail->SMTPSecure = _MAIL_SMTP_SECURE;    // Establece el tipo de seguridad SMTP
   		$mail->Port = _MAIL_SMTP_PORT; // direccion del servidor
		$mail->SMTPAuth = true; // usaremos autenticacion
		$mail->Username = _MAIL_SMTP_USER; // usuario
		$mail->Password = _MAIL_SMTP_PASS; // contraseña
		$mail->From = 	_MAIL_SMTP_FROM;
		$mail->FromName = _MAIL_SMTP_FROMNAME;
		$mail->IsHTML(true);
		$mail->Subject = $titulo;
		$mail->AddAddress($para,$para_nombre);
		$body=$datos['msg_body'];
		$mail->Body = $body;
		// $headers="X-Gen: System";
		// $mail->AddCustomHeader($headers); 
 
    	$id_msg=$datos['msg_id'];
    	$mail->MessageID = $id_msg;
 
	    if(!$mail->Send()){
	    	echo $mail->ErrorInfo;
	    	print_r($mail->smtp->error);
	        return false;
	    }
		$mail->ClearAddresses();
		return true;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

problema envio correo gmail

Publicado por xve (5519 intervenciones) el 24/02/2015 07:21:42
Hola Juan Pablo, para gmail, creo que la seguridad es TLS en vez de SSL.

Lo puedes probar y comentar?

Exactamente que error te da?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema envio correo gmail

Publicado por juan pablo (9 intervenciones) el 24/02/2015 14:01:58
hola gracias por tu pronta respuesta, lo probe y no funciona, mira perdon mi poca experiencia, cuando activo el reprt_all no me aparece nada sobre phpmailer o similar, pero se me queda el spinner del javascript girando,osea que no recibe todo lo necesario,por otro lado en al formulario al guardar si se registra en la base de datos pero es esta funcion la que anda, como puedo ver el error?teoricamente deberia mostrarlo con
1
echo $mail->ErrorInfo;
no?
desde ya otra vez gracias, te comento que la funcion estaba configurada para un servidor smtp y anda de 10, es mas probe volver a pasar los datos y anda sin problemas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema envio correo gmail

Publicado por Manuel Emilio Vargas Herrera (154 intervenciones) el 28/02/2015 20:26:27
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema envio correo gmail

Publicado por juan pablo (9 intervenciones) el 02/03/2015 15:08:34
hola gracias por tu aporte, he podido mandar el mail,sin embargo se me presento la siguiente situacion:tengo mi proyecto en un server local y en la nube, me pasa que en el server local no los manda y en la nube si, con la misma configuracion, pede ser esto?o debe haber algo por ahi que se me escapa?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema envio correo gmail

Publicado por Manuel Emilio Vargas Herrera (154 intervenciones) el 02/03/2015 15:15:20
Tienes el siguiente código fuente:

1
2
3
4
5
if(!$mail->Send()){
	    	echo $mail->ErrorInfo;
	    	print_r($mail->smtp->error);
	        return false;
	    }

Puedes revisar qué errores te despliega en la ventana del navegador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema envio correo gmail

Publicado por juan pablo (9 intervenciones) el 02/03/2015 15:41:18
lo tengo, pero no me indica ningun error, sino que queda el spining cargando, por eso tal vez pensaba de que pasaba algo como que no se puede conectar la sesion smto con gmail y se queda intentando conectar desde el server local, porque sino me devolveria false, saldria de la funcion.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function Enviar_Correo_ticket($datos)   {
	/*****/
	$titulo="[#".$datos[ticket][id_tickets_hash]."] : ".obtener_tipo_tickets($datos[ticket][id_tipo_tickets])."-"._MAIL_SMTP_FROMNAME;
	$para=$datos['para'];
	$para_nombre=$datos['para_nombre'];
	/*****/
$mail = new PHPMailer();
//Hecho esto pasamos a definir mail de origen, destino, nombre, etc.:
$mail->From 	= _MAIL_SMTP_FROM;
$mail->FromName = _MAIL_SMTP_FROMNAME;
$mail->AddAddress($para);
//$mail->AddReplyTo("jpaschiatest@gmail.com"); // Mail de respuesta
//Luego definimos el contenido del mail:
$mail->IsHTML(true); // Podemos incluir tags html
$mail->Subject = $titulo;
$mail->AddAddress($para,$para_nombre);
$body=$datos['msg_body'];
$mail->Body = $body;
 
 
//Si necesitamos una conexion con SSL, por ejemplo para enviar un mail desde PHP con gmail:
$mail->Mailer 	= _MAIL_SMTP_MAILER;
$mail->Host = _MAIL_SMTP_HOST; // direccion del servidor
$mail->Port = _MAIL_SMTP_PORT; // direccion del servidor
$mail->SMTPAuth = true;
$mail->Username = _MAIL_SMTP_USER;// SMTP username
$mail->Password = _MAIL_SMTP_PASS;// SMTP password
//asunto del mensaje
$headers="X-Gen: System";
$mail->AddCustomHeader($headers);
if ($datos[ticket][prioridad_tickets]==2) $mail->Priority=5;
if ($datos[ticket][prioridad_tickets]==1) $mail->Priority=1;
if ($datos[ticket][prioridad_tickets]==0) $mail->Priority=3;
$id_msg=$datos['msg_id'];
$mail->MessageID = $id_msg;
//enviamos el mail
if(!$mail->Send()){
    	echo $mail->ErrorInfo;
    	print_r($mail->smtp->error);
        $enviado=false;
    }else{
    	$enviado=true;
    }
	$mail->ClearAddresses();
	return $enviado;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema envio correo gmail

Publicado por Manuel Emilio Vargas Herrera (154 intervenciones) el 02/03/2015 15:53:21
Puedes comentar las líneas de una en una para ver cuál instrucción está fallando.

También puedes agregar la siguiente instrucción después de crear el objeto:

1
2
//permite modo debug para ver mensajes de las cosas que van ocurriendo
$mail­>SMTPDebug = 2;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

problema envio correo gmail

Publicado por juan pablo (9 intervenciones) el 02/03/2015 16:31:54
antes que nada gracias por tu tiempo Manue, agregue la instruccion debug pero no pasa nada sigue en la misma situacionl... paso a comentar
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function Enviar_Correo_ticket($datos)   {
	//obtengo los datos pasado como parametro para conformar el titulo a enviar
	$titulo="[#".$datos[ticket][id_tickets_hash]."] : ".obtener_tipo_tickets($datos[ticket][id_tipo_tickets])."-"._MAIL_SMTP_FROMNAME;
	$para=$datos['para'];//obtengo el mail de a quien enviar
	$para_nombre=$datos['para_nombre'];//nombre de a quien se envia
 
$mail = new PHPMailer();
$mail­->SMTPDebug = 2;
//Hecho esto pasamos a definir mail de origen, destino, nombre, etc.:
$mail->From 	= _MAIL_SMTP_FROM;
$mail->FromName = _MAIL_SMTP_FROMNAME;
$mail->AddAddress($para);
//$mail->AddReplyTo("jpaschiatest@gmail.com"); // Mail de respuesta
//Luego definimos el contenido del mail:
$mail->IsHTML(true); // Podemos incluir tags html
$mail->Subject = $titulo;
$mail->AddAddress($para,$para_nombre);
$body=$datos['msg_body'];
$mail->Body = $body;
 
 
//Si necesitamos una conexion con SSL, por ejemplo para enviar un mail desde PHP con gmail:
$mail->Mailer 	= _MAIL_SMTP_MAILER;//contante smtp
$mail->Host = _MAIL_SMTP_HOST; // constante host
$mail->Port = _MAIL_SMTP_PORT; // constante puerto a utilizar
$mail->SMTPAuth = true; //pongo que es con autenticacion
$mail->Username = _MAIL_SMTP_USER;//constante de usuario gmail
$mail->Password = _MAIL_SMTP_PASS;// constante pass gmail
//asunto del mensaje
$headers="X-Gen: System";
$mail->AddCustomHeader($headers);
//prioridades 
if ($datos[ticket][prioridad_tickets]==2) $mail->Priority=5;
if ($datos[ticket][prioridad_tickets]==1) $mail->Priority=1;
if ($datos[ticket][prioridad_tickets]==0) $mail->Priority=3;
$id_msg=$datos['msg_id'];
$mail->MessageID = $id_msg;
//enviamos el mail
if(!$mail->Send()){
//sino se envia devuelve falso
    	echo $mail->ErrorInfo;
    	print_r($mail->smtp->error);
        $enviado=false;
    }else{
//si se envia devuelve verdadero
    	$enviado=true;
    }
	$mail->ClearAddresses();
 //devulve si envio o no
	return $enviado;
}
las constantes estan definidas asi:
1
2
3
4
5
6
7
8
9
10
/*DATOS DE CONFIG MAILING GMAIL*/
define("_MAIL_SMTP_HOST","ssl://smtp.gmail.com");
define("_MAIL_SMTP_MAILER","smtp");
define("_MAIL_SMTP_AUTH",true);
define("_MAIL_SMTP_PORT",465);
 
define("_MAIL_SMTP_USER","user@gmail.com");
define("_MAIL_SMTP_PASS","passgmail");
define("_MAIL_SMTP_FROM","user@gmail.com");
define("_MAIL_SMTP_FROMNAME","[MKE Solutions] TECMANAGER | TM Soporte |");
Espero se entienda, la verdad lo unico que imagino que uede suceder es que desde el servidor local no se pueda lograr establecer la conexion smtp y queda intentando en
1
2
3
4
5
6
7
if(!$mail->Send()){//aqui creo debe quedarse porque no llega a asgnarse el valor a la variable $enviado
	   	echo $mail->ErrorInfo;
	   	print_r($mail->smtp->error);
	    $enviado=false;
	}else{
	   	$enviado=true;
	}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar