usar servidor gratis enviar cuál correo configurar como php forms smtp gmail smtp-auth

servidor - ¿Cómo se usa la autenticación con gmail para un formulario de contacto de PHP?



smtp.gmail.com 587 (4)

This is a complete working example. <?php // this is for troubleshooting errors // set the 1 to 0 to turn off (must set to 0 when in production mode or when you run this live error_reporting(E_ALL); ini_set(''display_errors'', ''1''); ?><?php if(isset($_POST[''email''])) { $email_to = $_POST[''email'']; $email_subject = "E-mail from website visitor."; // try adding a useful/relevent message to errors output to users function died($error) { echo "We are very sorry, but there were error(s) found with the form you submitted:/n/t "; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } // validation expected data exists // since all post are submit, check if they are empty or equal to an empty string if(isset($_POST[''email''])){ if($_POST[''email''] == "" || $_POST[''first_name''] == "" || $_POST[''last_name''] == "" || $_POST[''telephone''] == "" || $_POST[''comments''] == ""){ died(''Please fill out the entire form''); } } $first_name = $_POST[''first_name'']; // required $last_name = $_POST[''last_name'']; // required $email_from = $_POST[''email'']; // required $telephone = $_POST[''telephone'']; // not required $comments = $_POST[''comments'']; // required $error_message = ""; $email_exp = ''/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+/.[A-Za-z]{2,4}$/''; $string_exp = "/^[A-Za-z .''-]+$/"; if(!preg_match($email_exp,$email_from)) $error_message .= ''The Email Address you entered does not appear to be valid.<br />''; if(!preg_match($string_exp,$first_name)) $error_message .= ''The First Name you entered does not appear to be valid.<br />''; if(!preg_match($string_exp,$last_name)) $error_message .= ''The Last Name you entered does not appear to be valid.<br />''; if(strlen($comments) < 2) $error_message .= ''The Message you entered do not appear to be valid.<br />''; if(strlen($error_message) > 0) died($error_message); $email_message = "Form details below./n/n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "First Name: ".clean_string($first_name)."/n"; $email_message .= "Last Name: ".clean_string($last_name)."/n"; $email_message .= "Email: ".clean_string($email_from)."/n"; $email_message .= "Telephone: ".clean_string($telephone)."/n"; $email_message .= "Comments: ".clean_string($comments)."/n"; // create email headers // changed up your email a bit $headers = "From: $email_from/n"; $headers.= "MIME-Version: 1.0/n"; $headers .= "Content-type: text/html; charset=iso-8859-1/n"; mail($email_to, $email_subject, $email_message, $headers); header(''Location: http://www.cnn.com''); exit(); } ?> <form action="<?php echo $_SERVER[''PHP_SELF''] ?>" method="post"> Firstname:<br> <input type="text" name="first_name"><br> Lastname:<br> <input type="text" name="last_name"><br> Email:<br> <input type="text" name="email"><br> Phone Number:<br> <input type="text" name="telephone"><br> Comments:<br> <input type="textarea" name="comments"><br><br> <input type="submit" value="Submit"> </form>

Este es el código que tengo funcionando; sin embargo, quiero incorporar una forma de tener una autenticación smtp usando mi cuenta de gmail, pero no puedo entenderlo ... ¿me ayuda?

<?php if(isset($_POST[''email''])) { $email_to = "[email protected]"; $email_subject = "Website Inquire"; function died($error) { echo "We are very sorry, but there were error(s) found with the form you submitted. "; echo "These errors appear below.<br /><br />"; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } // validation expected data exists if(!isset($_POST[''first_name'']) || !isset($_POST[''last_name'']) || !isset($_POST[''email'']) || !isset($_POST[''telephone'']) || !isset($_POST[''comments''])) { died(''We are sorry, but there appears to be a problem with the form you submitted.''); } $first_name = $_POST[''first_name'']; // required $last_name = $_POST[''last_name'']; // required $email_from = $_POST[''email'']; // required $telephone = $_POST[''telephone'']; // not required $comments = $_POST[''comments'']; // required $error_message = ""; $email_exp = "/^[^0-9][A-z0-9_]+([.][A-z0-9_]+)*[@][A-z0-9_]+([.][A-z0-9_]+)*[.][A-z]{2,4}$/"; if (preg_match($email_exp, $email_from)) { echo "Email address is valid."; } else { echo "Email address is <u>not</u> valid."; } $string_exp = "/^[a-zA-Z .''-]+$/"; if(!preg_match($string_exp,$first_name)) { $error_message .= ''The First Name you entered does not appear to be valid.<br />''; } if(!preg_match($string_exp,$last_name)) { $error_message .= ''The Last Name you entered does not appear to be valid.<br />''; } if(strlen($comments) < 2) { $error_message .= ''The Comments you entered do not appear to be valid.<br />''; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Form details below./n/n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "First Name: ".clean_string($first_name)."/n"; $email_message .= "Last Name: ".clean_string($last_name)."/n"; $email_message .= "Email: ".clean_string($email_from)."/n"; $email_message .= "Telephone: ".clean_string($telephone)."/n"; $email_message .= "Comments: ".clean_string($comments)."/n"; $headers = ''From: ''.$email_from."/n". ''Reply-To: ''.$email_from."/n". ''X-Mailer: PHP/''.phpversion(); @mail($email_to, $email_subject, $email_message, $headers); } ?>


Desea utilizar una biblioteca de correo PHP moderna, como SwiftMailer que admite la autenticación SMTP.

Consulte las instrucciones de Google sobre qué servidores usar y los documentos de SwiftMailer sobre el envío de correo a un servidor SSL / TLS SMTP y el envío de correo con un combo de nombre de usuario / contraseña .

Al actualizar su código para usar SwiftMailer, debe deshacerse de esa abominación de una expresión regular de validación de correo electrónico, excluyendo numerosas partes y dominios locales completamente válidos. La corrección de cordura que se impone al construir el mensaje usando llamadas de método va a ocuparse de la mayoría de los otros problemas potenciales en tu código, como esa extraña función clean_string ; no la necesitarás (y no estoy seguro de qué crees que lo hace aquí, pero en realidad no hace que la cuerda sea más segura).


Puede usar PHPMailer http://sourceforge.net/projects/phpmailer/ , así es como envía correos electrónicos usando GMail, pero HTML y CSS no lo ayudarán mucho aquí.

function email($to, $subject, $body){ require_once("class.phpmailer.php"); $mail = new PHPMailer(); $mail->SMTPAuth = true; $mail->SMTPSecure = "ssl"; $mail->Host = "smtp.gmail.com"; $mail->Port = 465; $mail->Username = "name@example"; $mail->Password = "123456"; $mail->SetFrom("[email protected]", "Name Example"); $mail->Subject = $subject; $mail->Body = $body; $mail->AddAddress($to); $mail->Send(); unset($mail); }


Creo que usando Gmail; google cambiar los métodos de autenticación allí, pude autenticar con éxito siguiendo este paso primero: Video link esto es para el proceso de 2 pasos para permitir la aplicación externa

Necesitará generar una contraseña de aplicación.

luego use esa contraseña para su aplicación PHP.