Enviar Correos Electrónicos Con Mailgun Y Python

Fecha de publicación: 28 Septiembre 2021
Tiempo de lectura: 3 min.
Premium: False
Número de visitas: 317


MailGun es un servicio en la nube que nos permite enviar correos electrónicos de forma rápida y sencilla. Ya sea mediante su API o directamente desde nuestros proyectos con nuestras credenciales (Llave pública y llave secreta). 😎

Si bien existen múltiples alternativas en el mercado que nos ofrecen el mismo servicio, tales como MailChim, Sendinblue, SendGrid entre otros, creo que por la cantidad de herramientas que Mail Gun nos ofrece (tales como el seguimiento de correos, el envío de campañas, el diseño de correos personalizados, etc...) además del bajo costo en su servicio ($), sin duda Mail Gun es una de nuestras mejores opciones en cuanto a envío de correos se refiere.

Además que para usuarios free, existe la posibilidad de enviar hasta 5 mil correos electrónicos al mes completamente gratis. Bastante buenos si estamos comenzando con algún tipo de emprendimiento. 😁

Por todas la ventajas que Mail Gun nos ofrece, en esta ocasión aprenderemos a cómo poder enviar correos electrónicos a través de su API.

Para seguir este tutorial será necesario contar con los siguiente requerimientos.

  • Contar con una cuenta activa en MailGun.
  • Tener conocimientos de Python. 🐍

Bien, una vez dicho todo esto, y sin más introducción, pongamos manos a la obra. 🤓

Mail Gun

Lo primero que debemos hacer será autenticarnos con MailGun.

Una vez autenticados, debemos obtener el Sanbox URL que usaremos. Para ello ingresamos a Sending > Domain.

Algo importante a mencionar es que para todas las cuentas en MailGun existe un dominio sandbox, el cual podemos usar para testear el envío de nuestros correo. 🥳 Esta Url siempre comenzará con el prefijo sanbox, así que basta con copiar y almacenar la dirección en algún lugar seguro.

Si tú ya cuentas con uno o más dominios propios, no será necesario utilizar el sandbo

NOTA: Antes de continuar, si harás uso del sanbox, en la _secciónSending > Domain. encontraremos el apartado Authorized Recepients; allí deberás añadir todos los emails que usaras para las pruebas. Cada email debe confirmar su participación, por lo tanto deberás confirmar el correo que Mail Gun te enviará. (Esto solo es necesario para Sandbox)

Bien, continuemos.

Si usaremos el dominio de Sanbox debemos ingresar a Sending > Domain settings y seleccionamos la pestaña Sending API Keys, haciendo clic en el botón verde Add Sending Key.

Esto nos mostrará una llave con la cual podremos enviar correos utilizando el sandbox. Simplemente debemos copiar y almacenar esta llave en lugar seguro.

Si por otro lado pretendes enviar corres utilizando un dominio propio, entonces dirígete a Settings > API KEYS y copia el valor de tu llave secreta.


Una vez con estos 2 valores (URL Sandbox y API KEY), ya podremos enviar los correos electronicos mediante la API de MailGun.

Nuestro script pudiera quedar de la siguiente manera.

import requests

KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
SANDBOX = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx.mailgun.org'

def send_mail(sender, recipient):
    request_url = f'https://api.mailgun.net/v3/{SANDBOX}/messages'

    request = requests.post(request_url, auth=('api', KEY), data={
        'from': sender,
        'to': recipient,
        'subject': 'Hello World PyWombat',
        'text': 'Hola, nos encontramos en un nuevo tutorial en PyWombat.'
    })

    if request.status_code == 200:
        print('Correo electrónico enviado exitosamente.')
        pritn(request.json())


if __name__ == '__main__':
    sender = 'eduardo78d@gmail.com'
    recipient = 'eduardo.something2@gmail.com'

    send_mail(sender, recipient)

En este caso estaremos enviando el correo utilizando el API de Mail Gun. Por lo tanto basta con generar la dirección URL mediante nuestro sandbox y autenticarnos mediante nuestra API KEY.

La petición debe (obligatoriamente) realizarse utilizando el método POST.

En el cuerpo de la función debemos definir el destinatario, remitente, asunto y cuerpo del correo. Para este tutorial estamos enviando un correo en texto plano, sin embargo en una siguiente entrega aprenderemos a enviar correos con maquetado HTML.

Nota: No olvidemos que la librería requests no es una librería de la biblioteca estándar de Python, por lo tanto es necesario que la instalemos.

pip install requests

Si todo ha salido bien, en cuestión de segundo deberíamos recibir el correo en la bandeja de entrada.

De igual forma, podemos confirmar esto en el Dashboard de nuestra cuenta.

Felicitaciones, hemos podido enviar nuestro correo utilizando el servicio de Mail Gun. 🥂

Series

Si te interesa el tema de envío de correos con Python te recuerdo que en PyWombat tenemos un par de series que sin duda pueden ser de interés.

De igual forma te recuerdo que ya esta disponible la parte 2de este tutorial.

Espero puedas echarles un vistazo.

Más Tips y Ejercicios 🐍

Adquiere una subscripción PyWombat por tan solo $3 USD. al mes.

Conoce los beneficios de ser usuario premium:
Niveles desbloqueados: Ten accesos a todos los niveles de ejercicios. 🔓
Nuevo límite: Incrementa tu límite de ejercicios por semana. 🚀
Contenido único: Recibe semanalmente recursos exclusivos de Python (Videos, Artículos y Capitulos del libro PyWombat, comienza como desarrollador Python. 🐍