PHP - No consigo enviar correo.

   
Vista:

No consigo enviar correo.

Publicado por bruno (2 intervenciones) el 27/06/2016 09:48:25
Hola a todos, ante mano agradecer la ayuda que me podáis prestar.
El problema que tengo es el siguiente intento enviar un correo usando php pero no hay manera, os dejo las dos partes tanto la de html como la de php y espero que me podáis decir donde tengo el fallo, más una ves gracias por vuestro tiempo.

parte html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<h2><span>Formulario</span></h2>
<script type="text/javascript" src="js/form-validation.js"></script>
<form id="ContactForm" action="enviar.php" method="post" onSubmit="return validate()">
<fieldset>
	<div>
		<div class="wrapper">
			<span>Nombre:</span><input type="text" class="input" name="name">
		</div>
		<div class="wrapper">
			<span>Email:</span><input type="text" class="input" name="email">
		</div>
		<div class="textarea_box">
			<span>Consulta:</span><textarea name="mensaje" cols="1" rows="1"></textarea>
		</div>
		<button id="boton" value="enviar" type="submit"><a href="enviar.php"</a> </button>
		<!-- <a href="enviar.php" onClick="document.getElementById('ContactForm').submit()">Send</a> -->
	</div>
	</fieldset>
</form>

parte php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?
$name = htmlspecialchars($_POST['name']);
$email = htmlspecialchars(str_replace(" ","",$_POST['email']));
$mensaje = htmlspecialchars($_POST['mensaje']);
 
function comprobar_email($email){
        //compruebo unas cosas primeras
        if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
           if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
              //miro si tiene caracter .
              if (substr_count($email,".")>= 1){
                 //obtengo la terminacion del dominio
                 $term_dom = substr(strrchr ($email, '.'),1);
                 //compruebo que la terminación del dominio sea correcta
                 if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){
                    //compruebo que lo de antes del dominio sea correcto
                    $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1);
                    $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1);
                    if ($caracter_ult != "@" && $caracter_ult != "."){
                       return true;
                    }
                    else {
                        return false;
                    }
                 }
              }
           }
        }
}


if (empty($name) || empty($mensaje)) {
    echo "Rellene todos los campos del formulario, Volver al <a href=\"contacto.html\">contacto</a>";
}
else
{
    if (strlen ($name) > '100') {
    echo "El Nombre no debe superar los 100 caracteres";
    }
    else
    {
        if (strlen ($mensaje) > '10000') {
         echo "Mensaje muy grande";
         }
         else
         {
            if (comprobar_email($email)) {

                $remitente = ""; /* Correo a donde se enviara el mensaje */
                $destinatario = ""; /* Correo que envia el mensaje, es util para que no envie siempre el mensaje a correo no deseado */

                $headers = "MIME-Version: 1.0 \r\n";
                $headers .= "From: $destinatario \r\n";
                $headers .= "Reply-To: $remitente \r\n";
                $headers .= "Return-path: $remitente \r\n";
                $headers .= "Content-type: text/html; charset=iso-8859-1 \r\n";

                $body = "
                <table><tr><td width=\"150\" valign=\"top\"><strong>Nombre:</strong></td><td> ".$name."</td></tr>"."
                <tr><td valign=\"top\"><strong>Email:</strong></td><td> ".$email."</td></tr>"."
                <tr><td valign=\"top\"><strong>Mensaje:</strong></td><td>".$mensaje."</td></tr></table>";

                mail($remitente,"Consulta",$body, $headers);
                echo "Gracias por contactar con nosotros, le responderemos en la menor brevedad posible.";
            } else
            {
                echo "Esta mal escrito el mail, por favor volver a <a href=\"contacto.html\" >FORM</a>";
            }
        }
    }
}  
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

No consigo enviar correo.

Publicado por xve (5522 intervenciones) el 27/06/2016 17:18:18
Hola Bruno, la instrucción mail() no garantiza que lleguen los correos, ya que no utiliza ningun servidor smtp... por ejemplo a mi cuenta de correo, si no la envia un servidor SMTP correcto, no llega.

Te recomiendo que utilices phpmailer...
http://www.lawebdelprogramador.com/codigo/PHP/1884-Envio-de-correo-mediante-servidor-SMTP.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

No consigo enviar correo.

Publicado por bruno (2 intervenciones) el 28/06/2016 18:25:51
buenas y gracias por haber contestado, pero ahora tengo otra pregunta. antes me enviaba bien los correos, y mi pregunta es puede ser que hayan modificado algo en mi dominio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

No consigo enviar correo.

Publicado por xve (5522 intervenciones) el 28/06/2016 20:25:33
Puede ser que hayan cambiado algo en tu dominio, como por ejemplo el servidor mx de correo, o que en el servidor de tu correo hayan aplicado o mejorado la seguridad en el servidor de correo, que no permitan que lleguen mensajes de un servidor diferente al MX del dominio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar