Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema phpmailer y gmail

Estas en el tema de Problema phpmailer y gmail en el foro de PHP en Foros del Web. La verdad es que no se que esta pasando, me funcionaba perfecto y ahora no. Tengo xampp con php 5.6, windows 7. Al enviar el ...
  #1 (permalink)  
Antiguo 27/01/2018, 04:10
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Problema phpmailer y gmail

La verdad es que no se que esta pasando, me funcionaba perfecto y ahora no.
Tengo xampp con php 5.6, windows 7.
Al enviar el email (y poniendo $mail->SMTPDebug = 1;) me salta estos errores:
Código:
Warning:  stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in C:\xampp\htdocs\tienda2017VegaNorte\includes\class.smtp.php on line 248
SMTP -> ERROR: RSET failed:  KGA����6b��6�@��Đo�Jr_י��&Ӳ�fxl��>��"��|Dm�S�H�V�s��)�m)뭝��mNP����E������br���f�!L�)S�6�c�����|��]��d|���nMz��m��gw�y��!|�kYh������_���g@v�•�>��ET=���{� �M&@���G��c��g���FsI�87#m\�2�N@�^�����X�R� ��k��د�<�%��GpM�9$��{�&[���~&��!lL�nk� *7�t    ;��da�� �V�Y���@苻 
SMTP -> NOTICE: EOF caught while checking if connectedThe following From address failed:  [email protected] : Called Mail() without being  connected Error: The following From address failed: [email protected] : Called Mail() without being  connected
La línea en cuestión class.smtp.php on line 248:
Código PHP:
  public function StartTLS() {
    
$this->error null# to avoid confusion

    
if(!$this->connected()) {
      
$this->error = array("error" => "Called StartTLS() without being connected");
      return 
false;
    }

    
fputs($this->smtp_conn,"STARTTLS" $this->CRLF);

    
$rply $this->get_lines();
    
$code substr($rply,0,3);

    if(
$this->do_debug >= 2) {
      
$this->edebug("SMTP -> FROM SERVER:" $rply $this->CRLF '<br />');
    }

    if(
$code != 220) {
      
$this->error =
         array(
"error"     => "STARTTLS not accepted from server",
               
"smtp_code" => $code,
               
"smtp_msg"  => substr($rply,4));
      if(
$this->do_debug >= 1) {
        
$this->edebug("SMTP -> ERROR: " $this->error["error"] . ": " $rply $this->CRLF '<br />');
      }
      return 
false;
    }

    
// Begin encrypted connection
    
if(!stream_socket_enable_crypto($this->smtp_conntrueSTREAM_CRYPTO_METHOD_TLS_CLIENT)) {   //Línea 248
      
return false;
    }

    return 
true;
  } 
Código PHP:
<?php
function EnvioCorreoHTML($destinatario$contenido$asunto$concopia=0)
{

    
$mensaje mail_cabecera();
    
$mensaje.= $contenido;
    
$mensaje.=mail_pie();

    
// Para enviar correo HTML, la cabecera Content-type debe definirse
    
    
$cabeceras  'MIME-Version: 1.0' "\n";
    
$cabeceras .= 'Content-type: text/html; charset=utf-8' "\n";
    
    
// Cabeceras adicionales
    
$cabeceras .= 'From: '._email.'\n';
    
    
//$cabeceras .= 'Bcc: [email protected]' . "\n";
    
    // Enviarlo
    //mail($destinatario, $asunto, $mensaje, $cabeceras);
    //echo $mensaje;
    
include("includes/class.phpmailer.php");
include(
"includes/class.smtp.php");


$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug 1;

$mail->SMTPAuth true;
$mail->SMTPSecure _strSeguridadSMTP;
    

$mail->Host _strServidorCorreo;
$mail->Port _intPuertoCorreo;
$mail->Username _strEmailEnvios;
$mail->Password _strPassEMailEnvios;

$mail->From _strEmailEnvios;
$mail->FromName _T121;
$mail->Subject $asunto;
$mail->AltBody "Mensaje con notificacion";
$mail->MsgHTML(utf8_decode($mensaje));
//$mail->MsgHTML($mensaje);
    
    //$mail->MsgHTML($mensaje);
    //$mail->MsgHTML(iconv("UTF-8", "CP1252", $data));
    
$mail->AddAddress($destinatario);
    if (
$concopia==1$mail->AddBCC(_emailprincipal"Copia");
$mail->IsHTML(true);

if(!
$mail->Send()) {
  echo 
"Error: " $mail->ErrorInfo;
} else {
//  echo "Mensaje enviado a ".$destinatario;
}
    
}
?>
En los datos que le paso está el smtp:
smtp.gmail.com
587
tls
[email protected]
mypassword
Todas las variables de sesión me van bien para introducir en el formulario los datos de la compra.
La verdad es que no se que está pasando, antes funcionaba.
Muchas gracias de antemano.

Última edición por manyblue; 27/01/2018 a las 04:28
  #2 (permalink)  
Antiguo 27/01/2018, 21:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema phpmailer y gmail

Hiciste alguna actualización o cambio de configuración involucrando OpenSSL?, al parecer, no se puede establecer una conexión segura al servidor.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 28/01/2018, 01:26
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema phpmailer y gmail

Inteligente pregunta.
A ver, hace unos dos meses tuve un problema con el pc y tuve que formatearlo y reinstalar todo de nuevo, con el disparate de no ver como tenia todos las configuraciones, lo que si hice fue sacar una compia de todo htdocs y de toda la base de datos. Reinstalé xampp, configuré mercury para gmail y habilité ssl en php.ini, ¿Puede ser que al habilitarlo no hice el certificado?
Puedo pasar php.ini, httpd-ssl.conf, httpd.conf o httpd-xampp.conf
  #4 (permalink)  
Antiguo 28/01/2018, 11:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema phpmailer y gmail

Sí, es posible que copiando o creando un nuevo certificado se solucione tu problema.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 29/01/2018, 02:29
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema phpmailer y gmail

Cuando me funcionaba antes de formatear mi pc, en xamp no tenía habilitado ssl, esto es lo que me choca. Desabilito php_openssl.dll y me sigue pasando lo mismo. Ya lo único que se me pasa por la cabeza es un problema con gmail o mi cuenta de gmail.
Gracias.

Última edición por manyblue; 29/01/2018 a las 02:35
  #6 (permalink)  
Antiguo 31/01/2018, 06:20
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema phpmailer y gmail

Bueno, gracias por los aportes pero vuestras ideas no van por el resultado el problema es no es lo mismo php 5.6 que php 6 o 7.
Código para enviar:
Código PHP:

<?php 


    $mensaje
"Hola";


    
// Para enviar correo HTML, la cabecera Content-type debe definirse
    
    
$cabeceras  'MIME-Version: 1.0' "\n";
    
$cabeceras .= 'Content-type: text/html; charset=utf-8' "\n";
    
    
// Cabeceras adicionales
    
$cabeceras .= 'From: [email protected]\n';
    
    
//$cabeceras .= 'Bcc: [email protected]' . "\n";

use PHPMailerPHPMailerPHPMailer;
use 
PHPMailerPHPMailerSMTP;
use 
PHPMailerPHPMailerException;

require 
'includes/PHPMailer.php';
require 
'includes/SMTP.php';
require 
'includes/Exception.php';

$mail = new PHPMailer;
$mail->IsSMTP();
//////////////////////////////////////////////////////////////////
//AQUÍ ESTÁ LA CLAVE DE TODO
$mail->SMTPOptions = array(
    
'ssl' => array(
        
'verify_peer' => false,
        
'verify_peer_name' => false,
        
'allow_self_signed' => true
    
)
);
//////////////////////////////////////////////////////////////
$mail->SMTPDebug 0;
$mail->SMTPAuth true;
$mail->SMTPSecure 'tsl'
$mail->Host "smtp.gmail.com"
$mail->Port 587
$mail->IsHTML(true);
$mail->CharSet  ="utf-8";
$mail->Username "[email protected]"
$mail->Password "mipass"
$mail->SetFrom("[email protected]""Nombre");
$mail->AddAddress("[email protected]"); 
$mail->Subject "You have Message From Site"
$mail->Body "Prueba de envio";
$mail->Send();
    
?>
El que quiera estos archivo:
require 'includes/PHPMailer.php';
require 'includes/SMTP.php';
require 'includes/Exception.php';
Que me lo diga y se los paso.
Muchas gracias por vuestra ayuda. Procuro no dejar los post a medias. Esto me lo han hecho y me ha costado pasta pero lo regalo. A seguir divino, ciao.
  #7 (permalink)  
Antiguo 31/01/2018, 06:26
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema phpmailer y gmail

PD: Hay que descargar la última versión de phpmailer 6 aquí:
https://github.com/PHPMailer/PHPMailer/releases
  #8 (permalink)  
Antiguo 01/02/2018, 09:52
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema phpmailer y gmail

Me faltó solo deciros que yo tengo el envío de email en una función dentro de funciones.php por lo que esta parte la tuve que sacar de la función y ponerla al comienzo de funciones.php.


Código PHP:
Ver original
  1. use PHPMailer\PHPMailer\PHPMailer;
  2. use PHPMailer\PHPMailer\SMTP;
  3. use PHPMailer\PHPMailer\Exception;

Ojo, esta parte del código no puede ir dentro de una función pues php larga error.
A pasarlo bien, saludos

Última edición por Triby; 01/02/2018 a las 19:22 Razón: Código en Highlight
  #9 (permalink)  
Antiguo 01/02/2018, 19:24
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema phpmailer y gmail

Cita:
Iniciado por manyblue Ver Mensaje
Bueno, gracias por los aportes pero vuestras ideas no van por el resultado el problema es no es lo mismo php 5.6 que php 6 o 7.
Excelente, me alegro que lo hayas podido solucionar. Para la próxima, te recomiendo proporcionar información completa para evitar que tratemos de adivinar por dónde van los tiros.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 02/02/2018, 07:49
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Problema phpmailer y gmail

Gracias Triby pero adivino no soy si no me compraba la lotería jajajajajajaja, abrazos.

Etiquetas: formulario, gmail, html, 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 21:22.