Pregunta:
Fecha: 19-11-2019 13:16:09
(En Español)
Estoy practicando un poco con un formulario que envie un email, pero resulta que no se que estoy haciendo mal porque envio el formulario y no recibo ningun mensaje de email
He subido el proyecto a un hosting gratis, pero aun asi no funciona y no se donde esta el error
link del proyecto
Este es el codigo backend del proyecto
espero que me puedan ayudar
Un cordial saludo Votos: 0 - Respuestas: 6 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
Problema con la funcion mail() de PHP[Resuelta]
Hola amigos de esta comunidad.Estoy practicando un poco con un formulario que envie un email, pero resulta que no se que estoy haciendo mal porque envio el formulario y no recibo ningun mensaje de email
He subido el proyecto a un hosting gratis, pero aun asi no funciona y no se donde esta el error
link del proyecto
Este es el codigo backend del proyecto
<?php
$error = "";
// recibir la informacion
if(isset($_POST['submit'])){
$name = $_POST["name"];
$surname = $_POST["surname"];
$asunto = $_POST["asunto"];
$emailDest = $_POST["email"];
$emailTuyo = $_POST["emailTuyo"];
$messenger = $_POST["mensseger"];
// Limpiar la informacion que nos llega
$name = htmlspecialchars($name);
$surname = htmlspecialchars($surname);
$asunto = htmlspecialchars($asunto);
$emailDest = htmlspecialchars($emailDest);
$emailTuyo = htmlspecialchars($emailTuyo);
$messenger = htmlspecialchars($messenger);
$name = trim($name);
$surname = trim($surname);
$asunto = trim($asunto);
$emailDest = trim($emailDest);
$emailTuyo = trim($emailTuyo);
$messenger = trim($messenger);
$name = filter_var($name, FILTER_SANITIZE_STRING);
$surname = filter_var($surname, FILTER_SANITIZE_STRING);
$asunto = filter_var($asunto, FILTER_SANITIZE_STRING);
$emailDest = filter_var($emailDest, FILTER_SANITIZE_STRING);
$emailTuyo = filter_var($emailTuyo, FILTER_SANITIZE_STRING);
$messenger = filter_var($messenger, FILTER_SANITIZE_STRING);
if(empty($name) || empty($surname) || empty($asunto) || empty($emailDest) || empty($emailTuyo) || empty($messenger)){
$error = "Debes de llenar todos los datos";
}
// Verificar que sean email
$emailDest = filter_var($emailDest, FILTER_VALIDATE_EMAIL);
$emailTuyo = filter_var($emailTuyo, FILTER_VALIDATE_EMAIL);
if($emailDest == false) {
$error = "El Email de destino no es un email valido o no existe";
}
if($emailTuyo == false){
$error = "Tu email no es valido, compruebalo nuevamente";
}
// Enviar por email los datos
mail($emailDest, $asunto, $messenger);
if($error == false){
$success = "Tu mensaje ha sido enviado con exito";
}
}espero que me puedan ayudar
Un cordial saludo Votos: 0 - Respuestas: 6 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 20-11-2019 09:38:14 Hola Braylin,
Cómo sabes que el problema es la función mail?
Tu código no verifica si la función tuvo éxito o no. Sería bueno que capturaras el resultado para determinar si la función se ejecutó correctamente y definitivamente revisa tus logs.
Otra cosa que cabe destacar es lo que dice la documentación:
Es importante tener en cuenta que si el correo es aceptado para su envío, NO quiere decir que el correo haya alcanzado el destino indicado. y
La documentación tiene muchísimos tips para que tu código funcione correctamente. Dale un vistazo. Votos: 0 - Link respuesta -
Fecha: 20-11-2019 12:04:05 Te sugiero que cambies a una clase de SMTP, ya que controlas mejor el saber si lo envio o no y mas si es por medio del servidor/correo de gmail, ayuda mucho...
Por que a "simple vista" esta correcto, pero el problema de muchos servidores gratuitos es que tienen restringida la salida de emails por cuestion de que muchos la ocupan para SPAM.
Saludos terricola...
Stryfe™ Votos: 1 - Link respuesta -
Fecha: 24-11-2019 07:45:08 La función mail en general no es lo más recomendable para enviar correos.. especialmente los mensajes de error son muy poco informativos (además de ser muy poco eficiente).
Acá podés leer algunas formas mejores https://academy.leewayweb.com/como-enviar-emails-desde-php/ Votos: 2 - Link respuesta -
Fecha: 24-11-2019 11:56:02 Eso mismo me venia imaginando, muchas gracias Mauro, creo que tendre que buscar otra manera de enviar un correo.
Pero por ahora tengo una pregunta
En solo en PHP que existe este error o todos los lenguajes tienen este problema y enviar un correo electronico hay que hacerlo de distinta manera que solo usar la funcion ? Votos: 0 - Link respuesta -
Fecha: 25-11-2019 04:14:06 Desconozco cómo lo resuelven otros lenguajes... probablemente alguno tenga una mejor solución.
En php "pelado" sólo tienes la función mail, pero si te estiras un poquito encontrarás formas mucho mejores.
Te dejo nuevamente el enlace que te pasé antes (Esta vez bien linkeado :)
Votos: 1 - Link respuesta -
Fecha: 26-11-2019 02:41:41 Una forma de buscar una solución es enviar un correo hardcoded: no uses los datos recibidos del formulario sino datos creados por ti, para ver si ese correo si te llega, por ejemplo:
<?php $mensaje = "Este es el mensaje"; $mensaje = wordwrap($mensaje, 70, "\r\n"); mail('mi_email@mail.com', 'Asunto', $mensaje);y si este funciona, empezar a sustituir a partir de aqui. Votos: 1 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
