Enviar correos con Swiftmailer

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

Y nos llegará el correo así:
Enviar correos con Swiftmailer

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post