PHP - Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

 
Vista:
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por xve (6935 intervenciones) el 27/05/2018 09:53:36
Hola Dante, has revisado el contenido de la variable $contents, haber que contiene?
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 27/05/2018 21:07:53
no he revisado,soy nuevo en php,el codigo lo saque del internet
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
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por xve (6935 intervenciones) el 27/05/2018 21:57:08
Prueba a poner en la linea 58:
1
echo $contents;

Haber que te muestra
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 28/05/2018 00:18:39
sigue igual,no me muestra nada
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 Pedro
Val: 119
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Pedro (43 intervenciones) el 27/05/2018 10:46:23
CTRL+Shift+I entras en Network==Red das al Submit y compruebas los parámetros de la variable en la petición POST o GET según hayas codeado.

Ahí verás si envía bien o lo que ocurre también podrás observar los posibles errores, saludos.
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 27/05/2018 19:23:56
ese código lo saque del Internet,en otros sitios web me funciona correctamente y en este sitio web tengo problemas, no hallo los parametros
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 Pedro
Val: 119
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Pedro (43 intervenciones) el 28/05/2018 00:56:41
Lo que he podido observar es que hace el request por POST al sendemail.php pero no envía los parámetros

Así es que he mirado el código y he visto que tienes un button y no haces Submit

Luego el form lo tienes así:

1
<form id="cntct" class="frmt-1" action="sendemail.php" method="post" enctype="multipart/form-data">

Quítalo y déjalo así porque como no tienes envío de type="file" , no te hace falta el multiparT/form.

1
<form id="cntct" class="frmt-1" action="sendemail.php" method="post">

Para solucionar el submit puedes hacerlo de dos maneras:
Con un EventListener javascript para que cuando hagas click en button ,llame a una función y realice el submit .
Ó cambia el button a un input y pon type="submit".

Es lo que he podido observar a simple vista, prueba y nos cuentas....
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 28/05/2018 01:22:41
1
<input type="submit" value="Enviar Mensaje" id="btnSend">


he utilizado este codigo para el boton,me he dado cuenta que sale junto al text area del mensaje (se junta todo de un solo color con el text area),sigue llegando sin mensaje.


4444
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 Pedro
Val: 119
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Pedro (43 intervenciones) el 28/05/2018 10:06:40
Aplícale Css al input o prueba dejando el button como lo tenías con su class le pones un onclick y llamas a una función para que te haga el submit.

<button onclick="miFuncion()">Enviar Mensaje </button>

Quítale el multipart/form al tag form , por cierto me acabo de dar cuenta que tienes mal el input mira:

1
2
3
4
5
6
7
<input type="button" value="Enviar">
 
<!--Pon type submit así-->
<input type="submit" value="Enviar">
 
<!--Deja el tag del form así -->
<form id="cntct" class="frmt-1" action="sendemail.php" method="post">
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 28/05/2018 17:46:25
sigue igual,ahora no me llega los correo
de prueba,encontre el archivo ajax.js ,no se si esta bien el cambio que hice
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
<div class="col-sm-12 col-md-8">
  <form id="cntct" class="frmt-1" action="sendemail.php" method="post">
  <fieldset>
    <h3 class="latol text-center text-sm-left"><small>Formulario de consultas</small></h3>
    <div class="row">
      <div class="col-sm-6">
        <label>Nombre:</label>
        <div class="controls error-flotante"><input type="text" name="name" autofocus></div>
      </div>
      <div class="col-sm-6">
        <label>Correo:</label>
        <div class="controls error-flotante"><input type="text" name="email"></div>
      </div>
      <div class="col-sm-6">
        <label>Teléfono:</label>
        <div class="controls"><input type="text" name="phone"></div>
      </div>
      <div class="col-sm-6">
        <label>Ciudad:</label>
        <div class="controls"><input type="text" name="city"></div>
      </div>
    </div>
    <label>Asunto:</label>
    <div class="controls error-flotante"><input type="text" name="subject"></div>
    <label>Mensaje:</label>
    <div class="controls error-flotante"><textarea name="message"></textarea></div>
    <input type="submit" value="Enviar">
    <div class="alert alert-success d-none" id="msg1Success">El mensaje ha sido enviado correctamente.</div>
    <div class="alert alert-danger d-none" id="msg1Error">No se pudo enviar el mensaje.<br />Espere unos minutos e inténtelo de
  nuevo.</div>
    <div class="alert alert-info d-none" id="msg1Info">Procesando datos...</div>
  </fieldset>
</form>

aqui te dejo el archivo ajax.

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
function sack(file){
	this.AjaxFailedAlert = "Your browser does not support the enhanced functionality of this website, and therefore you will have an experience that differs from the intended one.\n";
	this.requestFile = file;
	this.method = "POST";
	this.URLString = "";
	this.encodeURIString = true;
	this.execute = false;
 
	this.onLoading = function() { };
	this.onLoaded = function() { };
	this.onInteractive = function() { };
	this.onCompletion = function() { };
 
	this.createAJAX = function() {
		try {
			this.xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				this.xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (err) {
				this.xmlhttp = null;
			}
		}
		if(!this.xmlhttp && typeof XMLHttpRequest != "undefined")
			this.xmlhttp = new XMLHttpRequest();
		if (!this.xmlhttp){
			this.failed = true;
		}
	};
 
	this.setVar = function(name, value){
		if (this.URLString.length < 3){
			this.URLString = name + "=" + value;
		} else {
			this.URLString += "&" + name + "=" + value;
		}
	}
 
	this.encVar = function(name, value){
		var varString = encodeURIComponent(name) + "=" + encodeURIComponent(value);
	return varString;
	}
 
	this.encodeURLString = function(string){
		varArray = string.split('&');
		for (i = 0; i < varArray.length; i++){
			urlVars = varArray[i].split('=');
			if (urlVars[0].indexOf('amp;') != -1){
				urlVars[0] = urlVars[0].substring(4);
			}
			varArray[i] = this.encVar(urlVars[0],urlVars[1]);
		}
	return varArray.join('&');
	}
 
	this.runResponse = function(){
		eval(this.response);
	}
 
	this.runAJAX = function(urlstring){
		this.responseStatus = new Array(2);
		if(this.failed && this.AjaxFailedAlert){
			alert(this.AjaxFailedAlert);
		} else {
			if (urlstring){
				if (this.URLString.length){
					this.URLString = this.URLString + "&" + urlstring;
				} else {
					this.URLString = urlstring;
				}
			}
			if (this.encodeURIString){
				var timeval = new Date().getTime();
				this.URLString = this.encodeURLString(this.URLString);
				this.setVar("rndval", timeval);
			}
			if (this.element) { this.elementObj = document.getElementById(this.element); }//else{alert(this.element);}
			if (this.xmlhttp) {
				var self = this;
				//alert(this.method);
				if (this.method == "GET") {
					var totalurlstring = this.requestFile + "?" + this.URLString;
					this.xmlhttp.open(this.method, totalurlstring, true);
				} else {
					this.xmlhttp.open(this.method, this.requestFile, true);
				}
				if (this.method == "POST"){
  					try {
						this.xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
					} catch (e) {}
				}
 
				this.xmlhttp.send(this.URLString);
				this.xmlhttp.onreadystatechange = function() {
					switch (self.xmlhttp.readyState){
						case 1:
							self.onLoading();
						break;
						case 2:
							self.onLoaded();
						break;
						case 3:
							self.onInteractive();
						break;
						case 4:
							self.response = self.xmlhttp.responseText;
							self.responseXML = self.xmlhttp.responseXML;
							self.responseStatus[0] = self.xmlhttp.status;
							self.responseStatus[1] = self.xmlhttp.statusText;
							self.onCompletion();
 
//							alert(self.response);
 
 
 
							if(self.execute){ self.runResponse(); }
							if (self.elementObj) {
								//var elemNodeName = self.elementObj.nodeName;
								//elemNodeName.toLowerCase();
								/*if (elemNodeName == "input" || elemNodeName == "select" || elemNodeName == "option" || elemNodeName == "textarea"){
									self.elementObj.value = self.response;*/
								//} else {
									self.elementObj.innerHTML = self.response;
								//}
							}
							self.URLString = "";
						break;
					}
				};
			}
		}
	};
this.createAJAX();
}
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 Pedro
Val: 119
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Pedro (43 intervenciones) el 28/05/2018 21:37:24
Ahora comprendo porque no tenías el submit , la petición la hace por ajax de forma asyncrona. Pues ahora si que es verdad que no sé en donde está el fallo.

Entonces en este caso puedes dejar el button como lo tenías porque supongo que tendrás un Listener que realiza la maquinaria de envío y no te hace falta el input ni poner type="submit" ni nada.

Es muy raro ...! ni si quiera marca error en la consola del navegador...!
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 29/05/2018 03:42:20
aquí dejo el archivo,para que puedas analizarlo mejor
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 29/05/2018 17:23:01
hay alguna forma de eliminar el ajax?
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 Pedro
Val: 119
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Pedro (43 intervenciones) el 29/05/2018 19:31:34
Claro que puedes eliminar como tú dices el ajax ..! Si sabes los parámetros que espera sendemail.php haces un submit form por el método POST y ya está.

Abre con un editor el archivo sendemail.php ó como se llame

Mira los isset($_POST["nombre del parámetro a recibir "]) <!--tendrás un isset por cada parámetro de entrada-->

Luego compruebas todos los names de cada input o textarea y compruebas que se corresponden con lo que realmente espera sendemail.php en los isset.

Cambias el button por un input le pones el type="submit" aplica los estilos Css para que se separe del TextArea,le des forma , color y ya lo tienes.

PD:Comprueba antes de hacer nada, lo que te ha dicho el compañero MundoPortal365 tiene buena pinta y quizás ese sea el problema de que no te llegue el mensaje.

Regards
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 29/05/2018 21:46:22
Gracias,el problema era el codigo sendemail.php,encontre uno en google y me funciono perfecto,ahora el problema es como añadir el subject ,city y tphone
eee
este es el codigo utilizado,el problema es que ahora sale procesando,y reviso mi correo y ya llego el mensaje
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
<?php
 
    // Only process POST reqeusts.
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        // Get the form fields and remove whitespace.
        $name = strip_tags(trim($_POST["name"]));
				$name = str_replace(array("\r","\n"),array(" "," "),$name);
        $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
        $message = trim($_POST["message"]);
 
        // Check that data was sent to the mailer.
        if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
            // Set a 400 (bad request) response code and exit.
            http_response_code(400);
            echo "Oops! There was a problem with your submission. Please complete the form and try again.";
            exit;
        }
 
        // Set the recipient email address.
        // FIXME: Update this to your desired email address.
        $recipient = "ventas@icynperuana.com";
 
        // Set the email subject.
        $subject = "New contact from $name";
 
        // Build the email content.
        $email_content = "Name: $name\n";
        $email_content .= "Email: $email\n\n";
        $email_content .= "Message:\n$message\n";
 
        // Build the email headers.
        $email_headers = "From: $name <$email>";
 
        // Send the email.
        if (mail($recipient, $subject, $email_content, $email_headers)) {
            // Set a 200 (okay) response code.
            http_response_code(200);
            echo "Thank You! Your message has been sent.";
        } else {
            // Set a 500 (internal server error) response code.
            http_response_code(500);
            echo "Oops! Something went wrong and we couldn't send your message.";
        }
 
    } else {
        // Not a POST request, set a 403 (forbidden) response code.
        http_response_code(403);
        echo "There was a problem with your submission, please try again.";
    }
 
?>
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
sin imagen de perfil
Val: 19
Ha aumentado su posición en 5 puestos en PHP (en relación al último mes)
Gráfica de PHP

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por Dante (10 intervenciones) el 29/05/2018 22:11:52
se puede quitar( // Set the email subject.
$subject = "New contact from $name"; ) , ya que quiero que me llegue el asunto que escriben los clientes y no el new contact.
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

Cuando me envían mensaje a través del formulario, me llega todo menos el mensaje

Publicado por MundoPortal365 (10 intervenciones) el 28/05/2018 23:06:38
Buenas tardes,

Veo que hay un detalle en el nombre del textarea, cambiar "message" por "mensaje".

Salu2
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