PHPMailer can not connect to the SMTP host

0

I have this code made in PHP to send emails from a form on a web page. In localhost it works perfectly, but when I upload it to webcindario it does not work and it gives me this smtp error:

  

Could not access file: SMTP Error: Could not connect to SMTP host

This is the code:

<?php

$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$portal = $_POST['portal'];
$piso = $_POST['piso'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$incidencia = $_POST['incidencia'];
$message = $_POST['message'];
$archivo = $_FILES['adjunto'];

require("archivosformulario/class.phpmailer.php");

$mail = new PHPMailer();

$mail->From     = $email;
$mail->FromName = $first_name; 
$mail->AddAddress("[email protected]"); // Dirección a la que llegaran los mensajes.


$mail->WordWrap = 50; 
$mail->IsHTML(true);    
$mail->Subject  =  "Incidencia ";

$mail->Body     =  
    "Esto es un correo generado desde la web, si quiere mas informacion contacte con: [email protected] \n<br". 
    "Nombre: $first_name \n<br />".    
    "Apellido: $last_name \n<br />".  
    "Portal: $portal \n<br />".
    "Piso: $piso \n<br />".
    "Email: $email \n<br />".
    "Telefono: $phone \n<br />".  
    "Incidencia: $incidencia \n<br />".
    "Mensaje: $message \n<br />";

$mail->AddAttachment($archivo['tmp_name'], $archivo['name']);



$mail->IsSMTP(); 
$mail->Host = "ssl://smtp.gmail.com:465";  // Servidor de Salida.
$mail->SMTPAuth = true; 
$mail->Username = "[email protected]";  // Correo Electrónico
$mail->Password = "mipasswd"; // Contraseña


if ($mail->Send()){
    echo "<script>alert('bien');location.href ='javascript:history.back()';</script>";
}else{
    echo "<script>alert('Error al enviar el formulario')</script>";
    var_dump($_POST);
    exit();
}

?>
    
asked by francisco 22.03.2018 в 13:52
source

2 answers

0

Try separating the host and the SMTP server. I usually the structure that suo is as follows

require("class.phpmailer.php");
$mail = new PHPMailer();

//Luego tenemos que iniciar la validación por SMTP:
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = ""; // A RELLENAR. Aquí pondremos el SMTP a utilizar. Por ej. mail.midominio.com
$mail->Username = ""; // A RELLENAR. Email de la cuenta de correo. [email protected] La cuenta de correo debe ser creada previamente. 
$mail->Password = ""; // A RELLENAR. Aqui pondremos la contraseña de la cuenta de correo
$mail->Port = 465; // Puerto de conexión al servidor de envio. 
$mail->From = ""; // A RELLENARDesde donde enviamos (Para mostrar). Puede ser el mismo que el email creado previamente.
$mail->FromName = ""; //A RELLENAR Nombre a mostrar del remitente. 
$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos 
$mail->IsHTML(true); // El correo se envía como HTML 
$mail->Subject = “Titulo”; // Este es el titulo del email. 
$body = “Hola mundo. Esta es la primer línea ”; 
$body .= “Aquí continuamos el mensaje”; $mail->Body = $body; // Mensaje a enviar. $exito = $mail->Send(); // Envía el correo.
if($exito){ echo ‘El correo fue enviado correctamente.’; }else{ echo ‘Hubo un problema. Contacta a un administrador.’; } 

Applying what you have, it would be like this:

require("class.phpmailer.php");
$mail = new PHPMailer();

//Luego tenemos que iniciar la validación por SMTP:
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = "smtp.gmail.com"; // A RELLENAR. Aquí pondremos el SMTP a utilizar. Por ej. mail.midominio.com
$mail->Username = "[email protected]"; // A RELLENAR. Email de la cuenta de correo. [email protected] La cuenta de correo debe ser creada previamente. 
$mail->Password = "mipasswd"; // A RELLENAR. Aqui pondremos la contraseña de la cuenta de correo
$mail->Port = 465; // Puerto de conexión al servidor de envio. 
$mail->From = ""; // A RELLENARDesde donde enviamos (Para mostrar). Puede ser el mismo que el email creado previamente.
$mail->FromName = ""; //A RELLENAR Nombre a mostrar del remitente. 
$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos 
$mail->IsHTML(true); // El correo se envía como HTML 
$mail->Subject = "Incidencia "; // Este es el titulo del email. 
$mail->Body     =  
    "Esto es un correo generado desde la web, si quiere mas informacion contacte con: [email protected] \n<br". 
    "Nombre: $first_name \n<br />".    
    "Apellido: $last_name \n<br />".  
    "Portal: $portal \n<br />".
    "Piso: $piso \n<br />".
    "Email: $email \n<br />".
    "Telefono: $phone \n<br />".  
    "Incidencia: $incidencia \n<br />".
    "Mensaje: $message \n<br />";

$mail->AddAttachment($archivo['tmp_name'], $archivo['name']);
$exito = $mail->Send(); // Envía el correo.
if($exito){ 
    echo "<script>alert('bien');location.href ='javascript:history.back()';</script>"; 
}
else{ 
    echo "<script>alert('Error al enviar el formulario')</script>";
    var_dump($_POST);
    exit(); 
} 
    
answered by 23.03.2018 / 08:24
source
0

Hi, you can try this example:

<?php
//Load composer's autoloader
require_once('PHPMailer/PHPMailerAutoload.php'); 

$mail = new PHPMailer(true); 
$mail->SMTPOptions = array(
    'ssl' => array(
        'verify_peer' => false,
        'verify_peer_name' => false,
        'allow_self_signed' => true
    )
);
$mail->SMTPDebug = 2; 
$mail->IsSMTP();
$mail->SMTPAuth = true;
//$mail->SMTPSecure = "ssl";
$mail->SMTPSecure = 'tls';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;// TCP port to connect to
$mail->CharSet = 'UTF-8';
$mail->Username ='[email protected]'; //Email para enviar
$mail->Password = 'passwor'; //Su password
//Agregar destinatario
$mail->setFrom('[email protected]', 'may');
$mail->AddAddress('[email protected]');//A quien mandar email
$mail->SMTPKeepAlive = true;  
$mail->Mailer = "smtp"; 


    //Content
$mail->isHTML(true); // Set email format to HTML
$mail->Subject = 'PRUEBA 6';
$mail->Body    = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
   //Attachments
$mail->addAttachment($archivo['tmp_name'], $archivo['name']);         // Add attachments

if(!$mail->send()) {
  echo 'Error al enviar email';
  echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
  echo 'Mail enviado correctamente';
}

This is the base, what else do you adapt according to your use? Saludes

    
answered by 23.03.2018 в 06:27