Failed to connect to mailserver

publicado por: Anonymous

Vean, una ves se me fué respondido eso de “edo” ahora tengo otro problema, sucede que al darle enviar me aparece este error:

Warning: mail(): Failed to connect to mailserver at “localhost” port 25, verify your “SMTP” and “smtp_port” setting in php.ini or use ini_set() in C:xampphtdocsphpvalida.php on line 35

Aquí está mi código:
Urgente por favor.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Envia mail</title>
</head>
<body>
<?php
if(isset($_POST['edo'])){
    $nombre = $_POST['nombre'];
    $apellido = $_POST['apellido'];
    $correo = $_POST['correo'];
    $comentario = $_POST['comentario'];
    if($nombre==""){
        print "<p>El campo 'nombre' es obligatorio.</p>";
    } else if($apellido == ""){
        print "<p>El campo 'apellido' es obligatorio.</p>";
    } else if($correo == ""){
        print "<p>El campo 'correo' es obligatorio.</p>";
    }  else if($comentario == ""){
        print "<p>El campo 'comentario' es obligatorio.</p>";
    } else {
        $mail = "[email protected]";
        $mensaje = "<p>$nombre $apellido te acaba de enviar un correo eléctronico</p>n";
        $mensaje .= "<p>El correo es $correo y su comentario es:</p>";
        $mensaje .= $comentario;

        $headers = "MIME-Version: 1.0rn"; 
        $headers .= "Content-type:text/html; charset=UTF-8rn"; 
        $headers .= "From: ".$_POST['correo']."rn"; 
        $headers .= "Repaly-to: $correorn";

        $asunto = "$nombre $apellido te envió un email.";

        if(mail($mail, $asunto, $mensaje,$headers)){
            print "<p></p>";
        } else {
            print "Error en el envío de su correo, intentarlo más tarde<br>";
        }

    }

} else {
?>
<form method="post" action="valida.php">
<p>Nombre:  </p><p><input type="text" name="nombre"></p>
<p>Apellido: </p><p><input type="text" name="apellido"></p>
<p>Correo:   </p><p><input type="text" name="correo"></p>
<p>Comentario: </p>
<p><textarea name="comentario" cols="50" rows="6" wrap="off"></textarea> </p>
<br>
<input type="submit" value="Enviar" >
<input type="hidden" value="1" name="edo" >
</form>
<?php } ?>
</body>
</html>

solución

Ocurre porque no tienes configurado un servidor de correo en tu pc, prueba subiendo tus fuentes a tu servidor publico (hosting).

Te recomiendo usar PHPMailer, documentacion y descarga: https://github.com/PHPMailer/PHPMailer este te servira en cualquier ambiente (pc local, servidor)

<?php
require './src/PHPMailer.php';
require './src/SMTP.php';

$mail=new PHPMailer();
$mail->CharSet = 'UTF-8';

$body = 'Cuerpo del correo de prueba';

$mail->IsSMTP();
$mail->Host       = 'smtp.gmail.com';
$mail->SMTPSecure = 'tls';
$mail->Port       = 587;
$mail->SMTPDebug  = 1;
$mail->SMTPAuth   = true;
$mail->Username   = '[email protected]';
$mail->Password   = 'tuclave';
$mail->SetFrom('[email protected]', "juliocpiro");
$mail->AddReplyTo('[email protected]','no-reply');
$mail->Subject    = 'Correo de prueba PHPMailer';
$mail->MsgHTML($body);

$mail->AddAddress('[email protected]', 'Gianni');
$mail->send();
?>

En mi caso tuve algunos errores de no deteccion de clases, si te ocurre en los dos archivos importados (src/PHPMailer.php y src/SMTP.php), comenta la linea 21 de cada uno donde dice namespace PHPMailerPHPMailer;

En el caso que uses una cuenta de GMAIL para el envio de correos, te llegara un correo indicando que una aplicacion esta intentando iniciar sesión, te dará un link para que permitas el acceso.

introducir la descripción de la imagen aquí

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *