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.

Respuesta
1

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.";}?>

¡Gracias! 

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.

Hay un problema al copiar el código, debes darle un enter después de cada ; (punto y coma), dado que sino te dará error

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas