Estoy haciendo una prueba desde localhost de enviar un formulario a una cuenta de gmail.
El error que me da es SMTP connection failed.
Aquí adjunto mi código de la clase sendmail.php
<?php
require_once('phpmailer/class.phpmailer.php');
require_once('phpmailer/class.smtp.php');
$mail = new PHPMailer();
//$mail->SMTPDebug = 3; // Enable verbose debug output
//$mail->isSMTP(); // Set mailer to use SMTP
$mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = '[email protected]'; // SMTP username
$mail->Password = 'prueba'; // SMTP password
$mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
$mail->Port = 587; // TCP port to connect to
$message = "";
$status = "false";
if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
if( $_POST['form_name'] != '' AND $_POST['form_email'] != '' AND $_POST['form_subject'] != '' ) {
$name = $_POST['form_name'];
$email = $_POST['form_email'];
$subject = $_POST['form_subject'];
$phone = $_POST['form_phone'];
$message = $_POST['form_message'];
$subject = isset($subject) ? $subject : 'New Message | Contact Form';
$botcheck = $_POST['form_botcheck'];
$toemail = '[email protected]'; // Your Email Address
$toname = 'Prueba'; // Your Name
if( $botcheck == '' ) {
$mail->SetFrom( $email , $name );
$mail->AddReplyTo( $email , $name );
$mail->AddAddress( $toemail , $toname );
$mail->Subject = $subject;
$name = isset($name) ? "Nombre: $name<br><br>" : '';
$email = isset($email) ? "Email: $email<br><br>" : '';
$phone = isset($phone) ? "Teléfono: $phone<br><br>" : '';
$message = isset($message) ? "Mensaje: $message<br><br>" : '';
$referrer = $_SERVER['HTTP_REFERER'] ? '<br><br><br>Este formulario ha sido enviado por: ' . $_SERVER['HTTP_REFERER'] : '';
$body = "$name $email $phone $message $referrer";
$mail->MsgHTML( $body );
$sendEmail = $mail->Send();
if( $sendEmail == true ):
$message = 'Se ha enviado el mensaje con <strong>éxito.</strong> Recibirás una contestación lo más rápido posible.';
$status = "true";
else:
$message = '<strong>No se pudo</strong> enviar el mensaje por algún motivo. Por favor, inténtelo de nuevo más tarde.<br /><br /><strong>Razón:</strong><br />' . $mail->ErrorInfo . '';
$status = "false";
endif;
} else {
$message = 'Bot <strong>Detectado</strong>.! Límpiate por completo.!';
$status = "false";
}
} else {
$message = 'Por favor <strong>rellena</strong> todos los campos y envíelo de nuevo.';
$status = "false";
}
} else {
$message = 'Se ha producido <strong>un error</strong>. Por favor, inténtelo de nuevo más tarde.';
$status = "false";
}
$status_array = array( 'message' => $message, 'status' => $status);
echo json_encode($status_array);
?>
¿De qué puede ser el problema? He intentado muchas cosas pero sigo sin dar con la solución.
Muchas gracias