Hola, tengo el siguiente formulario:
<p>
<form method="post" action="send.php" onsubmit="return verifyForm();">
<div class="cform1">
<table class="center">
<tr>
<td>
<input type="text" name="email" id="email" placeholder="Tu Email" required autocomplete="off">
</td>
<td>
<input type="text" name="name" id="name" placeholder="Tu nombre" required autocomplete="off">
</td>
</tr>
<tr>
<td colspan="2"><input type="text" name="subject" id="subject" placeholder="Motivo de tu contacto" maxlength="45" autocomplete="off"></td>
</tr>
<tr>
<td colspan="2">
<textarea name="mensaje" id="mensaje" class="textarea1" placeholder="Escribe aquí tu mensaje..." required></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<button class="inputst4 sendbutton" id="inputsend"><span class="icon-tsenvelope"></span> Enviar Mensaje</button>
</tr>
</table>
</form>
</div>
</p>
Y el archivo send.php:
<?php
error_reporting(0);
$email = $_POST['email'];
$name = $_POST['name'];
$subject = $_POST['subject'];
$mensaje = $_POST['mensaje'];
if ($email=='' || $name=='' || $subject=='' || $mensaje==''){
echo "<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";
}else{
require("includes/class.phpmailer.php");
include("includes/class.smtp.php");
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
$cuerpo="name: ".$name."<br />Email: ".$email."<br />mensaje: ".$mensaje."<br />";
try {
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]"; // SMTP account username
$mail->Password = "mypasswordgmail"; // SMTP account password
$mail->AddReplyTo($email, $name);
$mail->AddAddress('[email protected]', '[email protected]');
$mail->SetFrom("$email", $name);
$mail->IsHTML(true);
$mail->Subject = 'Contacto';
$mail->MsgHTML($cuerpo);
$mail->AltBody = 'Nombre: '.$name.' \n<br />'.
'Email: '.$email.' \n<br />'.
'Mensaje: '.$mensaje.' \n<br />';
$mail->Send();
echo "<script>alert('Muchas gracias por contactarnos! Pronto recibirás una respuesta');location.href ='javascript:history.back()';</script>";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
}
?>
Y me sale 404 cuando intento enviar el mensaje desde el hosting, uso hostinger.
Saludos!
Hola, te dejo el link de un post que hiciste tu y que lograste solucionar
https://underc0de.org/foro/dudas-generales-121/%28solucionado%29-problema-con-html-%28formulario-de-contacto%29/
Saludos!
ANTRAX
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Hola, te dejo el link de un post que hiciste tu y que lograste solucionar
https://underc0de.org/foro/dudas-generales-121/%28solucionado%29-problema-con-html-%28formulario-de-contacto%29/
Saludos!
ANTRAX
Sí es lo mismo, pero añado la línea que puse y nada! El formulario y el php están bien no? Me da error_404
Edito: Ya he probado con el smtp de gmail y también con el correo y smpt de mi dominio y nada.
Podrías indicar bien la linea que has puesto?
Saludos!
ANTRAX
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Podrías indicar bien la linea que has puesto?
Saludos!
ANTRAX
$mail->SMTPSecure = "ssl"; // SMTPSecureDespués de SMTPAuth.
Proba poniendolo asi:
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Username = "[email protected]";
$mail->Password = "**********";
$mail->Port = "465";
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Proba poniendolo asi:
$mail->IsSMTP();
$mail->Host = "smtp.gmail.com";
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Username = "[email protected]";
$mail->Password = "**********";
$mail->Port = "465";
Mismo error, me sale 404.
Puedes probar en otro servidor para descartar eso? Es raro que te de un 404 (Not found), si el fichero send.php existe.
Saludos.
El send.php está en la misma carpeta que el archivo html?
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
El send.php está en la misma carpeta que el archivo html?
El send.php está en el directorio principal. Lo raro es que he editado el archivo send.php para mostrar un mensaje de problemas técnicos y si me aparece cuando llamo al php desde el formulario :(
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
El send.php está en la misma carpeta que el archivo html?
El send.php está en el directorio principal. Lo raro es que he editado el archivo send.php para mostrar un mensaje de problemas técnicos y si me aparece cuando llamo al php desde el formulario :(
Y el html dónde se encuentra el form? También está en la raiz?
Saludos.
Tengo un par de consultas 808mafia :
Supongamos que tienes todas las llamadas escritas en el código correctamente, por favor revisa la raiz de directorios, includes y la extensión del index.
- Has intentado hacer el envio sin ssl?
- Porque no pruebas con algo más sencillo para ver si no hay otra cosa que afecte?
te dejo este code básico para que lo pruebes con tu smtp local
Citar<?php
$smtp = ""; //si tenes SMTP local mejor para probarlo
$url = "localhost"; //server
$puerto = "25"; //sin ssl
$remitente = "";
$too = "";
ini_set($smtp,$url);
ini_set("smtp_port",$puerto);
ini_set("sendmail_from",$remitente);
$subject = "test";
$message = "prueba de correo";
$headers = "From: $remitente" ;
mail($too,$subject,$message,$headers);
?>
Quizas separar el código para debugear?
Best regards,
U.
@blackdrake (https://underc0de.org/foro/index.php?action=profile;u=24972)
Ahora he probado poniendo e archivo php donde se encuentra el form en vez de directamente en la raiz y cuando intento enviar el formulario me sale un error que dice:
Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /home/user212121/public_html/mi-carpeta/send.php on line 28
@Unname (https://underc0de.org/foro/index.php?action=profile;u=51666)
Ya he intentado hacer el envío sin ssl y nada, la otra vez me pasaba lo mismo y solucione poniendo el ssl pero ahora no se que pasa. Pero ahora k ya llama bien al php voy a probar de nuevo y te digo.
Prueba con el siguiente código.
<?php
$correoreceptor = trim($_POST['[email protected]']);
$asunto = trim($_POST['subject']);
$mensaje = trim($_POST['mensaje']);
$cabeceras = 'MIME-Version: 1.0' . "\r\n";
$cabeceras .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$Correo = trim($_POST['email']);
$Nombre = trim($_POST['name']);
$cabeceras .= 'From: '.$Nombre.' <'.$Correo.'>' . "\r\n";
mail($correoreceptor, $asunto, $mensaje, $cabeceras);
header('Location: a donde quieras que te redireccione.');
?>
Cambia al correo al que quieres que te llegue y al final a donde quieras que te redireccione. Es imposible que los correos te lleguen a la carpeta de spam.
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
@blackdrake (https://underc0de.org/foro/index.php?action=profile;u=24972)
Ahora he probado poniendo e archivo php donde se encuentra el form en vez de directamente en la raiz y cuando intento enviar el formulario me sale un error que dice:
Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in /home/user212121/public_html/mi-carpeta/send.php on line 28
@Unname (https://underc0de.org/foro/index.php?action=profile;u=51666)
Ya he intentado hacer el envío sin ssl y nada, la otra vez me pasaba lo mismo y solucione poniendo el ssl pero ahora no se que pasa. Pero ahora k ya llama bien al php voy a probar de nuevo y te digo.
Que tienes en la línea 28?
Saludos.
@rollth (https://underc0de.org/foro/index.php?action=profile;u=30952) voy a probar y te digo.
@blackdrake (https://underc0de.org/foro/index.php?action=profile;u=24972) la línea 28 coincide justo con el ssl $mail->SMTPSecure = "ssl";
Lo he suprimido y ahora cuando intento enviar el formulario se queda la pantalla en blanco pero en la url del navegador parece que el archivo php se lee correctamente.
Saludos!
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
@rollth (https://underc0de.org/foro/index.php?action=profile;u=30952) voy a probar y te digo.
@blackdrake (https://underc0de.org/foro/index.php?action=profile;u=24972) la línea 28 coincide justo con el ssl $mail->SMTPSecure = "ssl";
Lo he suprimido y ahora cuando intento enviar el formulario se queda la pantalla en blanco pero en la url del navegador parece que el archivo php se lee correctamente.
Saludos!
Si se queda la pantalla en blanco es porque el código se ha ejecutado. Mira a ver si te llegan los correos.
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
@rollth (https://underc0de.org/foro/index.php?action=profile;u=30952) voy a probar y te digo.
@blackdrake (https://underc0de.org/foro/index.php?action=profile;u=24972) la línea 28 coincide justo con el ssl $mail->SMTPSecure = "ssl";
Lo he suprimido y ahora cuando intento enviar el formulario se queda la pantalla en blanco pero en la url del navegador parece que el archivo php se lee correctamente.
Saludos!
Si se queda la pantalla en blanco es porque el código se ha ejecutado. Mira a ver si te llegan los correos.
De momento no me ha llegado nada, ni siquiera en spam.
@rollth (https://underc0de.org/foro/index.php?action=profile;u=30952) he probado tu codigo y pasa lo mismo, se queda la pantalla en blanco y no me llega nada x_x
-
@ANTRAX (https://underc0de.org/foro/index.php?action=profile;u=1) Vale, estaba llamando mal a los includes!!
Ahora me dice: SMTP Error: Could not connect to SMTP host.
Voy a probar con el smpt de google y el de mi hosting y os comento pero creo que ya esta, gracias por la ayuda :P
Genial!
Por las dudas te dejo los datos de SMTP de Gmail
Servidor: ssl://smtp.gmail.com
Puerto: 465
User:
[email protected]Pass: PasswordGmail
Saludos!
ANTRAX
No tienes permitido ver los links.
Registrarse o Entrar a mi cuenta
Genial!
Por las dudas te dejo los datos de SMTP de Gmail
Servidor: ssl://smtp.gmail.com
Puerto: 465
User: [email protected]
Pass: PasswordGmail
Saludos!
ANTRAX
He probado varias cosas y me sigue dando el mismo error. Primero he habilitado POP y IMAP en mi cuenta Gmail. ( Sí, lo tenía deshabilitado ??? )
He puesto la línea del ssl porque según he leído, para el servidor SMTP de gmail eso necesita estar habilitado. He comprobado si la el user y pass es correcto miles de veces y he probado con otros correos de gmail (habilitando pop y imap de nuevo) y nada. He probado el puerto 465 (con ssl) y el 25 (con ssl), y con los 2 me dice lo mismo:
SMTP Error: Could not connect to SMTP host.El 404 ya sabemos que era porque estaba llamando mal a la ruta, ahora el problema es que no se puede conectar al smtp, he seguido estos pasos sin exito:
https://support.google.com/mail/answer/78775?hl=es
PD: Lo único que no intenté fue probar el puerto 587 (con tls). Lo voy a intentar así y edito.
Desde mi hosting me comentan que han desactivado el host SMTP debido al correo masivo. Y me dicen que use el de gmail.
EDITO Nada, tampoco pude con tls. Me he conectado a través de telnet al smtp.gmail.com con el puerto 25 y conecta correctamente, aquí os dejo el send.php tal como está:
<?php
error_reporting(0);
$email = $_POST['email'];
$name = $_POST['name'];
$subject = $_POST['subject'];
$message = $_POST['message'];
if ($email=='' || $name=='' || $subject=='' || $message==''){
echo "<script>alert('Los campos marcados con * son obligatorios');location.href ='javascript:history.back()';</script>";
}else{
require("../../includes/class.phpmailer.php");
include("../../includes/class.smtp.php");
$mail = new PHPMailer(true); // the true param means it will throw exceptions on errors, which we need to catch
$mail->IsSMTP(); // telling the class to use SMTP
$cuerpo="Nombre: ".$name."<br />Email: ".$email."<br />Mensaje: ".$message."<br />";
try {
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->Port = "25"; // set the SMTP port for the GMAIL server
$mail->Username = "[email protected]"; // SMTP account username
$mail->Password = "password"; // SMTP account password
$mail->AddReplyTo($email, $name);
$mail->AddAddress('[email protected]', 'Hello!');
$mail->SetFrom("[email protected]", $name);
$mail->IsHTML(true);
$mail->Subject = 'Contacto';
$mail->MsgHTML($cuerpo);
$mail->AltBody = 'Nombre: '.$name.' \n<br />'.
'Email: '.$email.' \n<br />'.
'Mensaje: '.$message.' \n<br />';
$mail->Send();
echo "<script>alert('Muchas gracias por contactarnos! Pronto recibirás una respuesta');location.href ='javascript:history.back()';</script>";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
}
?>
A ver si alguien sabe decirme que falla.