PHP - Problemas con mail php

 
Vista:
sin imagen de perfil

Problemas con mail php

Publicado por Jordi (1 intervención) el 01/03/2017 17:16:49
Hola Buenos días tengo un problema con el código php, exactamente con la función mail(). Lo he puesto de mil maneras hasta donde se y a ratos funciona bien y a ratos no, aparte cuando intento enviar un mail por ejemplo a mi mismo con la misma cuenta yahoo no me funciona pero cuando lo pruebo de enviar el formulario en una misma cuenta gmail si. En hotmail me pasa lo mismo con enviarme el formulario que no me puedo enviarlo. O sea que yahoo a yahoo no funciona ni con otras cuentas pero yahoo a hotmail o gmail si envia el formulario (a veces) gmail a gmail tampoco me funciona pero no recibe correos de yahoo... Les dejo el código para ver si encuentran alguna cosa rara (hay texto en catalán espero que no les sea ningún impedimento).

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
<?PHP
//CAPTCHA
$captcha=$_POST['g-recaptcha-response'];
$response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=6LevmA4UAAAAAOtmrRYwOq5wGuFQdvbzGMabxGCt&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']);
$response = json_decode($response, true);
 
	if (isset($_POST['consulta'])!="") {
	if (isset($_POST['nom'])=="") { echo "S'ha oblidat d'escriure el seu nom."; die(); }
	if (isset($_POST['motiu'])=="") { echo "S'ha oblidat d'escriure el motiu de la seva consulta."; die(); }
	if (isset($_POST['telf'])=="" || isset($_POST['email'])=="") {
		echo "S'ha oblidat d'escriure el seu número de telèfon o el seu correu electrònic.";
		die();
		}
	if (isset($_POST['motiu'])=="") { echo "S'ha oblidat d'escriure el motiu de la consulta a realitzar."; die(); }
	if($response["success"] === false){
		echo "S'ha oblidat de fer click en 'No soy un robot' per comprobar que el que ens ha enviat no fos Spam.";
		die();
		}
	$tipusconsulta = $_POST['tipusconsulta'];
	if ($tipusconsulta == "infogen") { $tipusconsulta = "Informació General"; }
	if ($tipusconsulta == "inforutes") { $tipusconsulta = "Informació de les Rutes";}
	if ($tipusconsulta == "infobodegues") { $tipusconsulta = "Informació de les Bodegues";}
	if ($tipusconsulta == "infovehicles") { $tipusconsulta = "Informació de la Flota de Vehicles"; }
	if ($tipusconsulta == "altres") { $tipusconsulta = "Altra Informació"; }
 
// Destinatari
$email_to = "jordisoria2000@yahoo.es";
 
// Asumpte del email
$email_subject = "Consulta Realitzada"."-".$tipusconsulta;
 
//Missatge a enviar per formulari
$email_message = "<html><head><title>Consulta</title></head><body><h1>Informació sobre una consulta realitzada</h1><div><p><b>Nom: </b>".$_POST['nom']."</p><p><b>Teléfon: </b>".$_POST['telf']."</p><p><b>Correu electrónic: </b>".$_POST['email']."</p><p><b>Tipus de consulta: </b>".$tipusconsulta."</p><p><b>Motiu de la Consulta: </b></p><p>".$_POST['motiu'].""."</p></div></body></html>";
 
// Remitent
		$remitent = "MIME-Version: 1.0" . "\r\n";
		$remitent .= "Content-type: text/html; charset=utf-8" . "\r\n";
		if ($_POST['email']== "") {
			$remitent .= "FROM: ".$email_to.""."\r\n".'Reply-To: '.$email_to."\r\n".'X-Mailer: PHP/'. phpversion();
		}
		else {
			$remitent .= "FROM: ".$_POST['email'].""."\r\n".'Reply-To: '.$_POST['email']."\r\n".'X-Mailer: PHP/'. phpversion();
		}
 
// Enviament del formulari per email
@mail($email_to, $email_subject, $email_message, $remitent);
 
// Comprobació de les dades del formulari enviat
	echo "<div><p><b>La seva consulta ens ha arribat satisfactoriament, gracies per la seva consulta. Próximament rebrà la informació solicitada.</b></p>";
	echo "<p><b>Nom i Cognoms: </b>";
	echo isset($_POST['nom'])? $_POST['nom'] : "";
	echo "</p><p><b>Telèfon de contacte: </b>";
	echo isset($_POST['telf'])? $_POST['telf'] : "";
	echo "</p><p><b>Correu electrònic: </b>";
	echo isset($_POST['email'])? $_POST['email'] : "";
	echo "</p><p><b>Consulta: </b>".$tipusconsulta."</p>";
	echo "<p><b>Motiu de la consulta:</b></p>";
	echo "<p>";
	echo isset($_POST['motiu'])? $_POST['motiu'] : "";
	echo "</p></div>";
} else {
Aqui va el formulario cuando no detecta que hay nada enviado!!!
}
?>
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
Val: 3.084
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Problemas con mail php

Publicado por xve (6933 intervenciones) el 01/03/2017 18:10:44
Hola Jordi, la instrucción mail() no es garantía de que lleguen los correos, ya que no utiliza ningún servidor MX para el envió del correo, por lo que depende como se puede considerar como spam... por ejemplo a mis cuentas de correo, no llegaría nuca, ya que el servidor de correo, verifica que el servidor MX del dominio haya sido quien ha enviado el correo.

Yo te recomiendo que utilizas algun servidor de correo para enviarlos... ahi no tiene que tener ningún problema.
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