Autenticación smtp completa para enviar correo desde formulario
amig@s.
Me gustaría preguntaros cómo puedo hacer una autenticación smtp completa en php para poder enviar un formulario web a un email. Mi servidor (Hostalia) tiene deshabilitado el php mailer.
Por favor, ruego algún ejemplo cuyo funcionamiento lo hayáis probado.
1 respuesta
Aquí tienes una guía completa en español de lo que debes implementar.
http://www.elserver.com/ayuda/como-envio-correos-con-php-por-smtp-phpmailer/
Buenas tardes.
Agradezco mucho que me hayas contestado, Adrian. Por favor, podrías indicarme el código de la class.phpmailer.php? Y también necesito saber si el código class.phpmailer,php que me facilites lo tengo que modificar de alguna manera. Gracias!
Aqui te descargas el php de phpMailer :
http://sourceforge.net/projects/phpmailer/
Y no, el class.phpmailer.php no tienes que modificarlo
Como bien ponen en el ejemplo:
require("class.phpmailer.php"); $mail = new PHPMailer(); //Luego tenemos que iniciar la validación por SMTP: $mail->IsSMTP(); $mail->SMTPAuth = true; $mail->Host = ""; // SMTP a utilizar. Por ej. smtp.elserver.com $mail->Username = "; // Correo completo a utilizar $mail->Password = ""; // Contraseña $mail->Port = 25; // Puerto a utilizar //Con estas pocas líneas iniciamos una conexión con el SMTP. Lo que ahora deberíamos hacer, es configurar el mensaje a enviar, el //From, etc. $mail->From = "[email protected]"; // Desde donde enviamos (Para mostrar) $mail->FromName = "Nombre"; //Estas dos líneas, cumplirían la función de encabezado (En mail() usado de esta forma: “From: Nombre <[email protected]>”) de //correo. $mail->AddAddress("correo"); // Esta es la dirección a donde enviamos $mail->IsHTML(true); // El correo se envía como HTML $mail->Subject = “Titulo”; // Este es el titulo del email. $body = “Hola mundo. Esta es la primer línea<br />”; $body .= “Acá continuo el <strong>mensaje</strong>”; $mail->Body = $body; // Mensaje a enviar $exito = $mail->Send(); // Envía el correo. //También podríamos agregar simples verificaciones para saber si se envió: if($exito){ echo ‘El correo fue enviado correctamente.’; }else{ echo ‘Hubo un inconveniente. Contacta a un administrador.’; }
Ahi te especifica que la clase class.phpmailer.php ya le haces un REQUIRE, asique ya te la trae al sistema. Luego solo es meterle los parametros y listo.
Vuelve a mirarte el manual que lo dicen muy especificamente todos los pasos.
Mejor haz caso de esta parte del código, que la anterior contiene errores.
¿
<?phprequire("class.phpmailer.php");$mail = new PHPMailer();$mail->IsSMTP();$mail->SMTPAuth = true;$mail->Host = ""; // SMTP a utilizar. Por ej. smtp.elserver.com$mail->Username = ""; // Correo completo a utilizar$mail->Password = ""; // Contraseña$mail->Port = 25; // Puerto a utilizar$mail->From = "[email protected]"; // Desde donde enviamos (Para mostrar)$mail->FromName = "ELSERVER.COM";$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos$mail->AddCC("[email protected]"); // Copia$mail->AddBCC("[email protected]"); // Copia oculta$mail->IsHTML(true); // El correo se envía como HTML$mail->Subject = "Titulo"; // Este es el titulo del email.$body = "Hola mundo. Esta es la primer línea<br />";$body .= "Acá continuo el <strong>mensaje</strong>";$mail->Body = $body; // Mensaje a enviar$mail->AltBody = "Hola mundo. Esta es la primer línean Acá continuo el mensaje"; // Texto sin html$mail->AddAttachment("imagenes/imagen.jpg", "imagen.jpg");$exito = $mail->Send(); // Envía el correo.if($exito){echo "El correo fue enviado correctamente.";}else{echo "Hubo un inconveniente. Contacta a un administrador.";}?>
Buenas tardes.
Disculpa que te vuelva a insistir, pero no me sale. De aquí http://sourceforge.net/projects/phpmailer/ qué me bajo únicamente el archivo class.phpmailer.php?
Y si yo tengo la cuenta [email protected] con la contraseña "123456" y quiero mostrar una tabla con los datos de los inputs del formulario como esta:
<tr>
<td align='center' bgcolor='#CCCCCC' font-size: 24px><strong>Datos del formulario</strong></td>
</tr>
<tr>
<td align='center' bgcolor='#FFFFCC'><strong>Cumpleaños1:</strong></td>
<td align='left' bgcolor='#FFFFCC'>$_POST[fecha]</td>
</tr>
<tr>
<td align='center' bgcolor='#FFFFCC'><strong>Cumpleaños2:</strong></td>
<td align='left' bgcolor='#FFFFCC'>$_POST[fecha]</td>
</tr>
cómo quedaría entonces el código para que se envíe el formulario correctamente???
Graciasss!
class.phpmailer.php
Quedaría así.
¿
<?require("class.phpmailer.php");$mail = new PHPMailer();$mail->IsSMTP();$mail->SMTPAuth = true;$mail->Host = "smtp.gmail.com";$mail->Username = "[email protected]"; $mail->Password = "123456"; // Contraseña$mail->Port = 25; // Puerto a utilizar$mail->From = "[email protected]"; // Desde donde enviamos (Para mostrar)$mail->FromName = "Nombre";//Estas dos líneas, cumplirían la función de encabezado (En mail() usado de esta forma: “From: Nombre <[email protected]>”) de //correo.$mail->AddAddress("[email protected]"); // Esta es la dirección a donde enviamos$mail->IsHTML(true); // El correo se envía como HTML$mail->Subject = “Titulo”; // Este es el titulo del email.$body = "Hola mundo. Esta es la primer línea<br />";$body .= "<table><tr><td align='center' bgcolor='#CCCCCC' font-size: 24px><strong>Datos del formulario</strong></td></tr><tr><td align='center' bgcolor='#FFFFCC'><strong>Cumpleaños1:</strong></td><td align='left' bgcolor='#FFFFCC'>".$_POST['fecha']."</td></tr><tr><td align='center' bgcolor='#FFFFCC'><strong>Cumpleaños2:</strong></td><td align='left' bgcolor='#FFFFCC'>".$_POST['fecha']."</td></tr></table>";$mail->Body = $body; // Mensaje a enviar$exito = $mail->Send(); // Envía el correo.//También podríamos agregar simples verificaciones para saber si se envió:if($exito){echo 'El correo fue enviado correctamente.';}else{echo 'Hubo un inconveniente. Contacta a un administrador.';}?>
Ten en cuenta que tienes que guardarlo como .php y el class.phpmailer.php debe estar al mismo nivel (en la misma carpeta).
Te deberían quedar 3 archivos.
Formulario.php -> Donde tienes tu formulario con <form action="enviar.php">
Enviar.php -> Donde tienes este código completo
class.phpmailer.php -> El que mueve todo esto.
- Compartir respuesta