Hoy vamos a ver como enviar correos con Swiftmailer una librería PHP desarrollada por SensioLabs, el equipo que mantiene proyectos como Symfony y Twig.
Utilizaremos el SMTP de Gmail para enviar el email desde localhost, esto funcionará también si tenemos la web subida a un servidor remoto. Haremos el típico formulario de contacto.
Podemos descargar Swiftmailer desde su web oficial.
index.php
<!DOCTYPE HTML>
<html lang="es">
<head>
<meta charset="UTF-8"/>
<title>Enviar correos con Swiftmailer</title>
</head>
<body>
<h2>Contacto</h2>
<form action="enviar.php" method="post">
Correo electronico: <br/>
<input type="email" name="email" /><br/>
Asunto: <br/>
<input type="text" name="asunto" /><br/>
Mensaje:<br/>
<textarea name="mensaje"></textarea><br/>
<input type="submit" name="submit" value="Enviar"/>
</form>
</body>
</html>
enviar.php
<?php
if(isset($_POST["submit"])){
//Incluimos swiftmailer
require_once 'Swift-5.0.3/lib/swift_required.php';
/*
* Creamos la instancia para el transporte SMTP
* le indicamos el servidor smtp a utilizar y el puerto
* le indicamos el usuario y la contraseña
* de nuestra cuenta de correo
*/
$transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 587)
->setUsername('correo@gmail.com')
->setPassword('contraseña de nuestro correo');
// Creamos el mensaje
$message = Swift_Message::newInstance()
//Al ser un formulario de contacto nos lo enviamos a nosotros mismos
->setTo(array(
"correo@gmail.com" => "Contacto Victor Robles",
))
// Definimos el asunto
->setSubject($_POST["asunto"])
// Podemos tener un cuerpo del mensaje en texto plano
//->setBody($_POST["mensaje"])
// Escribimos el mensaje en html
->addPart('<h1>Mensaje enviado con Swiftmailer - Victor Robles</h1>
<p>Email: '.$_POST["email"].'</p>
<p>Mensaje: '.$_POST["mensaje"].'</p>', 'text/html')
// Indicamos que el mensaje llega desde nuestra cuenta de correo
->setFrom("correo@gmail.com", "Correo con Swiftmailer")
// Añadimos un archivo adjunto
->attach(Swift_Attachment::fromPath("swiftmailer.png"));
// Enviamos el email
$mailer = Swift_Mailer::newInstance($transport);
$mailer->send($message);
echo "Correo enviado correctamente<br/>";
echo "<a href='index.php'>Volver</a>";
}else{
header("Location:index.php");
}
?>














