Email

Cómo preparar rápidamente Mailgun con PHP

Cuando empecé en la programación, recuerdo debatir si quería aprender ASP.NET o PHP. Leí miles de hilos en foros sobre cada lenguaje para ayudarme a tomar una decisión.
Imagen para Cómo preparar rápidamente Mailgun con PHP

Cuando empecé en la programación, recuerdo debatir si quería aprender ASP.NET o PHP. Leí miles de hilos en foros sobre cada lenguaje para ayudarme a tomar una decisión.

Elegí PHP principalmente por la comunidad, la disponibilidad de ejemplos y el hecho de que era de código abierto. Seguro que tus motivos para adentrarte en el mundo de PHP son muy parecidos.

PHP es uno de los lenguajes más utilizados; sin embargo, hay mucho material confuso o desactualizado en la web.

El objetivo de esta publicación en concreto es ofrecerte un resumen detallado sobre cómo utilizar Mailgun en tu entorno PHP con ejemplos sencillos para copiar y pegar

Uso de la biblioteca oficial de Mailgun-PHP

Una forma muy sencilla de utilizar Mailgun y aprovechar su excelente API para enviar emails es instalar la biblioteca oficial de PHP en tu entorno de desarrollo, escrita y mantenida como un proyecto de código abierto por nuestro Mailgunner Travis.

Pasos

  • Abre tu terminal y ve a la carpeta pública de tu servidor. Aquí es donde guardas tu sitio web y varía en función de la instalación y el servidor web utilizado: cd /var/www/html
  • Crea un directorio vacío para este proyecto: mkdir mailgun-php
  • Entra en el directorio y ejecuta los siguientes comandos: cd mailgun-php (cambia de directorio)
  • Ahora ejecuta el siguiente comando para descargar e instalar Composer. – curl -sS https://getcomposer.org/installer | php

Cuando utilizamos Composer de esta forma, nos permite descargar bibliotecas de PHP fácilmente a nivel local dentro de la carpeta. Ahora, utilicemos Composer para instalar la propia biblioteca de Mailgun.

  • Vamos a ejecutar esto para indicarle a Composer que vamos a utilizar (y, por tanto, necesitamos descargar) la biblioteca de Mailgun (aquí utilizamos la versión 1.7.1) y sus dependencias. – php composer.phar require mailgun/mailgun-php:~1.7.1

¡Enhorabuena, has instalado la biblioteca oficial de Mailgun y ya lo tienes todo listo para escribir código!

Abre un archivo e incluye el archivo vendor/autoload.php para empezar. En todos los ejemplos siguientes se da por hecho que ya has incluido esto en tu archivo:

                                

                                    
                                
                            

A continuación, sigue estas instrucciones de la documentación oficial para enviar un mensaje utilizando el SDK:

                                

                                    messages()->send($domain, $params);
$mg->messages()->send('example.com', [
  'from'    => 'bob@example.com',
  'to'      => 'sally@example.com',
  'subject' => 'The PHP SDK is awesome!',
  'text'    => 'It is so simple to send a message.'
]);
?>
                                
                            

Recuerda: $domain debe coincidir con el dominio que has configurado en app.mailgun.com.

Uso de Swift Mailer

Utilizar Mailgun con Swift Mailer es muy sencillo.

¡Asegúrate de tener a mano las credenciales SMTP de tu dominio! Puedes encontrarlas aquí y se llaman:

  • Inicio de sesión SMTP predeterminado
  • Contraseña predeterminada

Pasos

  • Crea una carpeta llamada Swiftmailer: mkdir swiftmailer, cd swiftmailer
  • Descarga Composer para instalar swiftmailer y sus dependencias
    • curl -sS https://getcomposer.org/installer | php
  • Instala Swiftmailer
    • php composer.phar require swiftmailer/swiftmailer @stable
  • Se descargarán los archivos; una vez finalizado, solo tienes que crear tu propio archivo vacío para comprobar que phpmailer funciona. Puedes hacerlo en tu terminal ejecutando lo siguiente:
    • touch mailgun_with_swiftmailer.php
    • vim mailgun_with_swiftmailer.php

Aquí estamos utilizando vim, pero puedes editar el archivo mailgun_with_swiftmailer.php en el editor que te resulte más cómodo.

                                

                                    setUsername('your SMTP username')
  ->setPassword('your SMTP password')
  ;

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Hello from Mailgun')
  ->setFrom(array('someone@domain.com' => 'John Doe'))
  ->setTo(array('someone_else@domain.org', 'third_contact@domain.org' => 'A third name'))
  ->setBody("And that's another ace in the hole for the Mailgun dev!")
  ;

// Send the message
$result = $mailer->send($message);
?>
                                
                            

Puedes encontrar más información sobre cómo enviar emails mucho más complejos en la documentación de Swiftmailer, disponible en línea aquí.

Uso de PHP Mailer

Mailgun también se puede utilizar junto con una de las bibliotecas de envío de emails más famosas de PHP: PHP Mailer.

PHP Mailer es una alternativa muy válida a la función integrada mail() de PHP, ya que acelera y permite personalizar en gran medida la forma en que envías emails con PHP. Las distribuciones de Linux y Mac OS X cuentan con una función integrada para enviar emails, aunque poco fiable. Por cierto, cabe mencionar que Windows no tiene absolutamente nada para enviar emails, así que te sugiero que sigas leyendo.

Pasos

  • Crea una carpeta llamada phpmailer
    • mkdir phpmailer
    • cd phpmailer
  • Descarga Composer para instalar phpmailer y sus dependencias
    • curl -sS https://getcomposer.org/installer | php
  • Composer está listo. Ahora vamos a instalar Phpmailer (5.2.8):
    • php composer.phar require phpmailer/phpmailer:5.2.8
  • Se descargarán los archivos; una vez finalizado, solo tienes que crear tu propio archivo vacío para comprobar que phpmailer funciona
    • touch mailgun_with_phpmailer.php
    • vim mailgun_with_phpmailer.php

Aquí estamos utilizando vim, pero puedes editar el archivo mailgun_with_phpmailer.php en el editor que te resulte más cómodo.

                                

                                    isSMTP();  // Set mailer to use SMTP
$mail->Host = 'smtp.mailgun.org';  // Specify mailgun SMTP servers
$mail->SMTPAuth = true; // Enable SMTP authentication
$mail->Username = 'username@domain.com'; // SMTP username from https://mailgun.com/cp/domains
$mail->Password = 'myp@55w0rd'; // SMTP password from https://mailgun.com/cp/domains
$mail->SMTPSecure = 'tls';   // Enable encryption, 'ssl'

$mail->From = 'sender@domain.com'; // The FROM field, the address sending the email 
$mail->FromName = 'Orlie'; // The NAME field which will be displayed on arrival by the email client
$mail->addAddress('recipient@domain.net', 'BOB');     // Recipient's email address and optionally a name to identify him
$mail->isHTML(true);   // Set email to be sent as HTML, if you are planning on sending plain text email just set it to false

// The following is self explanatory
$mail->Subject = 'Email sent with Mailgun';
$mail->Body    = '<span style="color: red">Mailgun rocks</span>, thank you <em>phpmailer</em> for making emailing easy using this <b>tool!</b>';
$mail->AltBody = 'Mailgun rocks, shame you can't see the html sent with phpmailer so you're seeing this instead';

if(!$mail->send()) {  
    echo "Message hasn't been sent.";
    echo 'Mailer Error: ' . $mail->ErrorInfo . "n";
} else {
    echo "Message has been sent  n";

}
?>
                                
                            

Los ajustes para la autenticación con el servidor SMTP de Mailgun se pueden encontrar aquí, igual que con Swiftmailer.

Inicia sesión en el panel de control de Mailgun, elige un dominio (o el dominio de pruebas que incluye cada cuenta nueva si no has configurado un dominio personalizado), y copia y pega estos datos (Inicio de sesión SMTP predeterminado, Contraseña predeterminada) en el fragmento de código anterior, en los campos de usuario y contraseña de SMTP.

Prepararlo es fantástico

¿Utilizas otras bibliotecas junto con Mailgun? Si es así, nos encantaría incluirlo en nuestra próxima publicación del blog sobre PHP, ¡con cobertura completa y ejemplos!

¡Feliz envío!