locked
Error envío de correo outlook y phpMailer RRS feed

  • Pregunta

  • Tengo el siguiente error al intentar enviar correo con php (usando la clase PHPMailer) y el servidor de correo de outlook.

    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\php\Classes\PHPMailer\class.smtp.php on line 344

    El problema se presenta en la página web de outlook       https://login.microsoftonline.com/es. 

    el error con debug en 2 es:

    2016-04-21 16:50:33 SERVER -> CLIENT: 220 BY2PR1001CA0066.outlook.office365.com Microsoft ESMTP MAIL Service ready at Thu, 21 Apr 2016 16:50:38 +0000 2016-04-21 16:50:33 CLIENT -> SERVER: EHLO localhost 2016-04-21 16:50:34 SERVER -> CLIENT: 250-BY2PR1001CA0066.outlook.office365.com Hello [190.158.102.59] 250-SIZE 157286400 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250 8BITMIME 2016-04-21 16:50:34 CLIENT -> SERVER: STARTTLS 2016-04-21 16:50:34 SERVER -> CLIENT: 220 2.0.0 SMTP server ready 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\php\Classes\PHPMailer\class.smtp.php on line 344 2016-04-21 16:50:34 SMTP Error: Could not connect to SMTP host. 2016-04-21 16:50:34 CLIENT -> SERVER: QUIT 2016-04-21 16:50:34 SERVER -> CLIENT: K GA $���6����]��o�z5�8��Z�'7�?�n�#��"���|�<���� ����Z(G�|���"+���!�e�}AW��uR��������=���n,���$5�U.?9�=���Rq��'��F�o��[���j���P3c���j�������5|V9���@���:���'�;���T:.� Oe��U�f��][��%��Ď��J9����a�q�P!�����Z+�p67���ho��H��>´�٘דNc�[o�j��U S�¸|�x/��dc�w7�g��E�Rdr��^��Q0H.6�Y�Ի_(�Ÿ 2016-04-21 16:50:34 SMTP ERROR: QUIT command failed: K GA $���6����]��o�z5�8��Z�'7�?�n�#��"���|�<���� ����Z(G�|���"+���!�e�}AW��uR��������=���n,���$5�U.?9�=���Rq��'��F�o��[���j���P3c���j�������5|V9���@���:���'�;���T:.� Oe��U�f��][��%��Ď��J9����a�q�P!�����Z+�p67���ho��H��>´�٘דNc�[o�j��U S�¸|�x/��dc�w7�g��E�Rdr��^��Q0H.6�Y�Ի_(�Ÿ 2016-04-21 16:50:34 SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Error al envío del correo al expediente 51500 Tipo de error : SMTP connect() failed. https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting Gracias,


    El código es:

    ........

    require_once 'C:\xampp\php\Classes\PHPMailer\class.phpmailer.php';
    require_once 'C:\xampp\php\Classes\PHPMailer\class.smtp.php';

    ...........

    $correo = new PHPMailer();
    $correo-> IsSMTP();
    $correo->SMTPAuth = true;
    $correo->SMTPSecure = "tls";
    $correo->Host = "smtp.office365.com";
    $correo->Port = 25;
    $correo->Username = "xxxxxxxxxxxxxxxx";
    $correo->Password = "xxxxxxxx";
    $correo->SMTPDebug=0;
    $correo->SetFrom ("xxxxxxxxxxxxxxxxxxxxxxxx", "Nombre de la cuenta");
    $correo->Timeout=300;
    $correo->Subject = $asunto;
    $correo->addCC("con copia");                
    $final = $pathArchivos."/Archivos/Documentos/tmp/".$archivo;     //anexo del correo
    if ($archivo != "")
    { $correo->AddAttachment($final, $archivo);
    }
    $correo->MsgHTML($cuerpo);
    $correo->Body = $cuerpo;
    $correo->AltBody = $cuerpo;
    $correo->IsHTML (true);
    while ($filau = mysqli_fetch_array($list))                          //se envían varios correos.......
    { $correo->ClearAddresses();
      $correo->AddAddress($filau["CorreoElectronico"]);        //matriz con direcciones de los correos a enviar
      if (!$correo->send())
      { print ("Error al envío del correo al expediente ".$filau["Exped"]." Tipo de error : ".$correo->ErrorInfo."<br>");
      }

    }

    Gracias,

    viernes, 22 de abril de 2016 16:28

Respuestas

  • El error hace referencia a que el equipo donde se ejecuta tu librería php no confía en el certificado del office365 lo cual es bastante extraño porque ese sitio ya utiliza certificados públicos y tu maquina donde corre la librería aparenta ser un Windows.

    • Valida que efectivamente ese equipo si es windows, confía en la CA de los servidores de office365. (ingresando via web a la cuenta por ejemplo).
    • Que la librería tengas que especificar en alguna parte los certificados a utilizar (tal vez debas convertir la ca publica en algún formato especial/codificación (.pem por ejemplo).
    • Propuesto como respuesta Moderador M lunes, 25 de abril de 2016 18:11
    • Marcado como respuesta Moderador M viernes, 29 de abril de 2016 15:18
    sábado, 23 de abril de 2016 18:50