Foros del Web » Creando para Internet » Diseño web »

Formulario por smtp

Estas en el tema de Formulario por smtp en el foro de Diseño web en Foros del Web. Hola, tengo una web con un formulario de contacto y quiero usar una cuenta de google, para enviar mi formulario. La idea es no depender ...
  #1 (permalink)  
Antiguo 22/06/2021, 20:35
Avatar de edurocc  
Fecha de Ingreso: julio-2013
Mensajes: 99
Antigüedad: 8 años
Puntos: 1
Formulario por smtp

Hola, tengo una web con un formulario de contacto y quiero usar una cuenta de google, para enviar mi formulario.
La idea es no depender del email del hosting.
Solo tengo el formulario con "action" vacio ja, cuales son los pasos a seguir?
Gracias.

Última edición por edurocc; 22/06/2021 a las 20:36 Razón: aclaracion
  #2 (permalink)  
Antiguo 24/06/2021, 12:30
 
Fecha de Ingreso: abril-2011
Mensajes: 164
Antigüedad: 10 años, 3 meses
Puntos: 60
Respuesta: Formulario por smtp

Lo puedes hacer con PHPMailer en el lado del servidor. Aquí hay un ejemplo muy bien explicado: https://github.com/PHPMailer/PHPMail...les/gmail.phps

Solamente tienes que cambiar los datos por los de tu cuenta de Gmail. No obstante, debes habilitar el acceso IMAP desde tu cuenta de Gmail, para poder conectarte al servidor SMTP de Gmail.

  #3 (permalink)  
Antiguo 27/06/2021, 19:29
Avatar de edurocc  
Fecha de Ingreso: julio-2013
Mensajes: 99
Antigüedad: 8 años
Puntos: 1
Información Respuesta: Formulario por smtp

Cita:
Iniciado por prueba230683 Ver Mensaje
Lo puedes hacer con PHPMailer en el lado del servidor. Aquí hay un ejemplo muy bien explicado: https://github.com/PHPMailer/PHPMail...les/gmail.phps

Solamente tienes que cambiar los datos por los de tu cuenta de Gmail. No obstante, debes habilitar el acceso IMAP desde tu cuenta de Gmail, para poder conectarte al servidor SMTP de Gmail.

Gracias por responder prueba230683
entonces le doy action al formulario a un php con esos códigos.
Es seguro poner mi contraseña en un archivo? eso me da un poco de miedo ja
Me dices que habilite IMAP, eso es para correos entrantes, es necesario? o solo habilito smtp?

Hay una nota que me asusta, y dice: "Por favor no se sienta tentado a hacerlo usted mismo: si no usa PHPMailer, hay muchas otras bibliotecas excelentes que sí debes mirar antes de rodar el tuyo. Tratar SwiftMailer , Laminas / Correo, Componentes Zeta etc."

Igual lo intentare ja
Gracias

Última edición por edurocc; 27/06/2021 a las 20:31 Razón: amplacion
  #4 (permalink)  
Antiguo 28/06/2021, 16:58
Avatar de edurocc  
Fecha de Ingreso: julio-2013
Mensajes: 99
Antigüedad: 8 años
Puntos: 1
Respuesta: Formulario por smtp

Cita:
Iniciado por prueba230683 Ver Mensaje
Lo puedes hacer con PHPMailer en el lado del servidor. Aquí hay un ejemplo muy bien explicado: https://github.com/PHPMailer/PHPMail...les/gmail.phps

Solamente tienes que cambiar los datos por los de tu cuenta de Gmail. No obstante, debes habilitar el acceso IMAP desde tu cuenta de Gmail, para poder conectarte al servidor SMTP de Gmail.

Hola
En los códigos hay una Seccion2 para IMAP. es necesario que este?
Gracias
  #5 (permalink)  
Antiguo 28/06/2021, 18:22
 
Fecha de Ingreso: abril-2011
Mensajes: 164
Antigüedad: 10 años, 3 meses
Puntos: 60
Respuesta: Formulario por smtp

1) Tienes razón. Activar IMAP no es necesario en este caso, ya que solamente estás enviando y no recibiendo emails. No obstante, tendrás que desactivar alguna configuración de seguridad en tu cuenta de Gmail, como 2FA, en caso de que lo tengas habilitado, y alguna cosa más. Aquí está detallado lo que tienes que cambiar: https://netcorecloud.com/tutorials/s...ver-using-php/

2) No existe ningún problema con incrustar tus credenciales de acceso si estás trabajando con tu propio servidor. Si estás en un hosting compartido, no me fiaría tanto.

3) Te propongo una alternativa mucho más fácil. Crear un formulario mediante Jotform, que tiene notificaciones por email.

Última edición por prueba230683; 02/07/2021 a las 09:58
  #6 (permalink)  
Antiguo 09/07/2021, 20:12
Avatar de edurocc  
Fecha de Ingreso: julio-2013
Mensajes: 99
Antigüedad: 8 años
Puntos: 1
Respuesta: Formulario por smtp

Cita:
Iniciado por prueba230683 Ver Mensaje
1) Tienes razón. Activar IMAP no es necesario en este caso, ya que solamente estás enviando y no recibiendo emails. No obstante, tendrás que desactivar alguna configuración de seguridad en tu cuenta de Gmail, como 2FA, en caso de que lo tengas habilitado, y alguna cosa más. Aquí está detallado lo que tienes que cambiar: https://netcorecloud.com/tutorials/s...ver-using-php/

2) No existe ningún problema con incrustar tus credenciales de acceso si estás trabajando con tu propio servidor. Si estás en un hosting compartido, no me fiaría tanto.

3) Te propongo una alternativa mucho más fácil. Crear un formulario mediante Jotform, que tiene notificaciones por email.
Perdón por la demora, pero pedí ayuda a un amigo que no supo ayudarme, por eso vuelvo ja.
Los códigos me quedaron asi:
<?php

use PHPMailer\PHPMailer;
use PHPMailer\Exception;

require 'phpMailer/Exception.php';
require 'phpMailer/PHPMailer.php';
require 'phpMailer/SMTP.php';

//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
//Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output - por si sale algun error y cero se pone para desactivar
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'smtp.gmail.com'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = '[email protected]'; //SMTP username
$mail->Password = '****'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
$mail->Port = 465; //465 o -TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`

//Recipients
$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]'); //Add a recipient
$mail->addCC('[email protected]');

//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Asunto muy importante para vos';

$mail->$mail->AltBody = 'SW SW SW';
$mail->$nombre = $ POST["nombre"];
$mail->$email = $ POST["email"];
$mail->$tel = $ POST["tel"];
$mail->$asunto = $ POST["asunto"];
$mail->$mensaje = $ POST["mensaje"];
$mail->$contenido = "nombre: " . $nombre . "\nemail: " . $email . "\ntel: " . $tel . "\nasunto: " . $asunto . "\nmensaje: " . $mensaje;
$mail->header ("contacto/gracias.html");

$mail->send();
echo 'El mensaje se envio correctamente';
} catch (Exception $e) {
echo "Hubo un error al enviar el mensaje: {$mail->ErrorInfo}";
}
?>

No envía los mail, y no me lleva a gracias.html, sino al enviarcorreo.php mostrándome una pagina en blanco.
Donde esta el error?
  #7 (permalink)  
Antiguo 10/07/2021, 13:15
 
Fecha de Ingreso: abril-2011
Mensajes: 164
Antigüedad: 10 años, 3 meses
Puntos: 60
Respuesta: Formulario por smtp

Descarga y mete estos 3 ficheros .php en el mismo directorio. A ser posible donde se encuentran el resto de tus .php:

https://github.com/PHPMailer/PHPMail.../PHPMailer.php
https://github.com/PHPMailer/PHPMail.../Exception.php
https://github.com/PHPMailer/PHPMail...r/src/SMTP.php

Y en ese mismo directorio, creas otro .php con el siguiente código:

Código:
<?php

use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

require './Exception.php';
require './PHPMailer.php';
require './SMTP.php';

$mail = new PHPMailer();

$mail->isSMTP();

$mail->SMTPDebug = SMTP::DEBUG_SERVER;

$mail->Host = 'smtp.gmail.com';

$mail->Port = 465;

$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

$mail->SMTPAuth = true;

$mail->Username = '[email protected]';

$mail->Password = 'yourpassword';

$mail->setFrom('[email protected]', 'Nombre Apellidos');

$mail->addAddress('[email protected]');

$mail->Subject = 'PHPMailer GMail SMTP test';

$mail->Body = 'Hola esto es un mensaje';

if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
header('Location: /contacto/gracias.html');
}

?>
Y asegúrate de:

Si sigue sin funcionar, indica qué error te lanza...


Última edición por prueba230683; 11/07/2021 a las 21:34
  #8 (permalink)  
Antiguo 16/07/2021, 15:04
Avatar de edurocc  
Fecha de Ingreso: julio-2013
Mensajes: 99
Antigüedad: 8 años
Puntos: 1
Respuesta: Formulario por smtp

Cita:
Iniciado por prueba230683 Ver Mensaje
Descarga y mete estos 3 ficheros .php en el mismo directorio. A ser posible donde se encuentran el resto de tus .php:

https://github.com/PHPMailer/PHPMail.../PHPMailer.php
https://github.com/PHPMailer/PHPMail.../Exception.php
https://github.com/PHPMailer/PHPMail...r/src/SMTP.php

Y en ese mismo directorio, creas otro .php con el siguiente código:

Código:
<?php

use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

require './Exception.php';
require './PHPMailer.php';
require './SMTP.php';

$mail = new PHPMailer();

$mail->isSMTP();

$mail->SMTPDebug = SMTP::DEBUG_SERVER;

$mail->Host = 'smtp.gmail.com';

$mail->Port = 465;

$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;

$mail->SMTPAuth = true;

$mail->Username = '[email protected]';

$mail->Password = 'yourpassword';

$mail->setFrom('[email protected]', 'Nombre Apellidos');

$mail->addAddress('[email protected]');

$mail->Subject = 'PHPMailer GMail SMTP test';

$mail->Body = 'Hola esto es un mensaje';

if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
header('Location: /contacto/gracias.html');
}

?>
Y asegúrate de:

Si sigue sin funcionar, indica qué error te lanza...

Hola, gracias por seguir el tema.
No me llegaron los email, no veo email enviados desde mi usuario y ahora tengo un errror.:

2021-07-16 20:48:04 SMTP ERROR: Failed to connect to server: Network is unreachable (101)
SMTP connect() failed. https://github.com/PHPMailer/PHPMail...roubleshooting
Mailer Error: SMTP connect() failed. https://github.com/PHPMailer/PHPMail...roubleshooting

Me imagino que una vez que hagas funcionar esto, viene el paso de adjuntar el formulario no? porque es el objetivo final ja.
Gracias.

nota: desactive el verificado de dos pasos, tambien se permiten conexiones pocos seguras a la cuenta. con eso tendria que conectarse pero veo que no.

Última edición por edurocc; 16/07/2021 a las 15:42 Razón: amplio informacion
  #9 (permalink)  
Antiguo 16/07/2021, 16:42
 
Fecha de Ingreso: abril-2011
Mensajes: 164
Antigüedad: 10 años, 3 meses
Puntos: 60
Respuesta: Formulario por smtp

1) Prueba enviando al puerto 587 en vez de 465 (y cambiando ssl por tls). Así:

Código:
<?php

use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;

require './Exception.php';
require './PHPMailer.php';
require './SMTP.php';

$mail = new PHPMailer();

$mail->isSMTP();

$mail->SMTPDebug = SMTP::DEBUG_SERVER;

$mail->Host = 'smtp.gmail.com';

$mail->Port = 587;

$mail->SMTPSecure = "tls";

$mail->SMTPAuth = true;

$mail->Username = '[email protected]';

$mail->Password = 'yourpassword';

$mail->setFrom('[email protected]', 'Nombre Apellidos');

$mail->addAddress('[email protected]');

$mail->Subject = 'PHPMailer GMail SMTP test';

$mail->Body = 'Hola esto es un mensaje';

if (!$mail->send()) {
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
header('Location: /contacto/gracias.html');
}

?>
Si esto no funciona continúa al paso 2.

2) Desconozco si lo estás hosteando en localhost o en un hosting, pero debes saber que algunos hosting como GoDaddy o DigitalOcean suelen bloquear parcial o totalmente el tráfico SMTP.

https://github.com/PHPMailer/PHPMail...t-to-smtp-host

Por otra parte, si lo estás hosteando en localhost verifica que tu firewall no está bloqueando peticiones salientes hacia el puerto 587 o 465.

Si ninguno de estos es tu caso, entonces no tengo ni idea de qué puede ser. Me rindo. Deberás usar algún servicio como JotForm que no están nada mal

  #10 (permalink)  
Antiguo 16/07/2021, 19:44
Avatar de edurocc  
Fecha de Ingreso: julio-2013
Mensajes: 99
Antigüedad: 8 años
Puntos: 1
Respuesta: Formulario por smtp

Cita:
Iniciado por prueba230683 Ver Mensaje
1) Prueba enviando al puerto 587 en vez de 465 (y cambiando ssl por tls). Así:

Si esto no funciona continúa al paso 2.

2) Desconozco si lo estás hosteando en localhost o en un hosting, pero debes saber que algunos hosting como GoDaddy o DigitalOcean suelen bloquear parcial o totalmente el tráfico SMTP.

https://github.com/PHPMailer/PHPMail...t-to-smtp-host
No haber leído antes esta referencia !!! Ya pague a Godaddy, inutil seran todos nuestros esfuerzos.

Voy a reclamar e intentar salirme de Godaddy, recomiendas un proveedor donde si funcione?

Otra pregunta: como se indica el formulario de mi web? El objetivo es que envie un formulario en una web, no veo la indicación.

Gracias.
  #11 (permalink)  
Antiguo 16/07/2021, 22:03
 
Fecha de Ingreso: abril-2011
Mensajes: 164
Antigüedad: 10 años, 3 meses
Puntos: 60
Respuesta: Formulario por smtp

Cita:
Voy a reclamar e intentar salirme de Godaddy, recomiendas un proveedor donde si funcione?
Te recomiendo Cloudways. Puedes solicitar una demo de 3 días para que puedas ver si funciona antes de pagar. Te dan a elegir entre varios servidores, no elijas DigitalOcean porque es otro de los que bloquea según la fuente que te pasé.

Esto no es publicidad ni enlace de afiliados, lo he utilizado en alguna ocasión y me gusta.

Respecto a lo del formulario, echa un vistazo a este ejemplo. Solamente tienes que adaptarlo un poco, teniendo en cuenta el otro ejemplo que te pasé. Si tienes algún problema, comenta, pero no puedo hacerlo todo por ti

Saludos

Última edición por prueba230683; 16/07/2021 a las 22:14



La zona horaria es GMT -6. Ahora son las 13:25.