Si bien los clientes de correo electrónico comercial ofrecen la conveniencia de una GUI fácil de usar, a menudo carecen de la flexibilidad y personalización que muchos desarrolladores o creadores de contenido desean para sus correos electrónicos necesidades.
Ya sea para enviar un correo electrónico de agradecimiento a un nuevo suscriptor en su canal de redes sociales o para agregar la funcionalidad de correo electrónico a su último proyecto, la capacidad de enviar mensajes automatizados usando SMTP en Python es algo que seguramente vendrá práctico.
Siga leyendo para descubrir cómo puede obtener una secuencia de comandos de Python para enviar correos electrónicos que se ejecutan en su máquina hoy.
¿Qué es SMTP?
En pocas palabras, SMTP, o Simple Mail Transfer Protocol, es un protocolo de comunicación para que los servidores de correo transmitan correo electrónico a través de Internet.
Es una parte integral de la capa de aplicación de la suite TCP / IP, que es un conjunto de protocolos que se utilizan para la comunicación a través de Internet u otras redes similares. En una red donde se implementa SMTP, un proceso conocido como
almacenamiento y reenvio ayuda a mover el correo a través de las redes.En cada punto final, el software conocido como Agente de transferencia de correo (MTA) utiliza el almacenamiento y el reenvío para facilitar la comunicación entre los servidores SMTP participantes. La función principal de SMTP, por lo tanto, es simplemente dictar dónde y cómo se mueve el correo de un punto a otro en una red.
Empezando
Necesita tener una cuenta de correo electrónico para usarla para enviar correos electrónicos usando este programa. Esto se debe a que utilizaremos el servicio SMTP del cliente de correo electrónico para enviar correos electrónicos. Para este tutorial, usaremos Gmail.
También puede usar un servidor de depuración SMTP local para enviar correos electrónicos de prueba, pero por ahora usaremos una cuenta de correo electrónico para enviar correos electrónicos, ya que es más intuitivo.
Es posible simplemente usar una cuenta de Gmail existente, pero mientras juegas con tu programa, es posible que pronto se llene de correos electrónicos de prueba. Es por eso que recomendamos crear una cuenta "desechable" con el fin de realizar pruebas.
Ahora, active la opción para permitir aplicaciones menos seguras para acceder a su cuenta de Gmail. Esta es otra razón para usar un correo electrónico desechable, ya que no se recomienda jugar con la configuración de privacidad de su correo electrónico principal.
Escribir el correo electrónico en Python
Python 3 viene preinstalado con un módulo llamado smtplib (abreviatura de biblioteca smtp), que se puede usar para trabajar con servidores SMTP.
Como cualquier otro módulo de Python, lo primero que debe hacer es importar smtplib.
importar smtplib
Inicializar un objeto SMTP
Ahora, puede utilizar smtplib para crear un objeto SMTP, que le proporcionará la mayor parte de la funcionalidad de un cliente de correo electrónico convencional. Sin embargo, las funciones de un objeto SMTP solo se pueden utilizar a través de métodos de instancia. Entonces, naturalmente, el siguiente paso es declarar una instancia de objeto.
mySMTP = smtplib. SMTP ("smtp.google.com")
Esto configura el objeto SMTP para enviar correos electrónicos utilizando el servidor SMTP de Google.
Después de esto, especificamos los correos electrónicos del remitente y el destinatario. Aquí es donde la cuenta de Gmail que creó anteriormente es útil.
emailSender = "[email protected]"
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
Una cosa a tener en cuenta aquí es que la lista de destinatarios es en realidad una matriz, lo que significa que está diseñada para almacenar valores no atómicos. Como resultado, ¡incluso puede especificar una lista de correo completa en este campo!
Escribir el mensaje
Podría decirse que la parte más sencilla del proceso, aquí debe ingresar valores que normalmente agregaría al redactar un nuevo correo electrónico. Esto incluye:
- Detalles del remitente
- Datos del destinatario
- Sujeto
- Cuerpo del mensaje
Estos campos se ponen juntos dentro de comillas triples y se delimitan de la siguiente manera:
newEmail = De: De Persona
Para: A Persona
Asunto: Prueba de correo electrónico
Este es el cuerpo del correo electrónico.
Envío del correo electrónico
Finalmente, podemos usar el comando sendmail para enviar el correo desde su servidor SMTP al servidor del destinatario.
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
Ahora, solo hay un paso final: reorganizar el código para evitar fallas previsibles del programa.
Solución de problemas de su programa de correo electrónico de Python
A veces, su servidor SMTP puede fallar al establecer una conexión con el del destinatario, o puede haber un problema al enviar un correo electrónico de un puerto SMTP a otro. En tal caso, su programa podría fallar inesperadamente.
Para tener en cuenta estas posibilidades, puede utilizar un prueba-excepto bloquear y poner las declaraciones propensas a errores dentro del tratar cuadra. Todo el programa, junto con el bloque try-except, debería verse así:
importar smtplib
emailSender = "[email protected]"
myThroaway = "[email protected]"
emailRecipients = [myThroaway]
newEmail = De: De Persona
Para: A Persona
Asunto: Prueba de correo electrónico
Este es el cuerpo del correo electrónico.
tratar:
smtpObj = smtplib. SMTP ("smtp.gmail.com")
mySMTP.sendmail (emailSender, emailRecipients, newEmail)
imprimir ("¡Correo electrónico enviado correctamente!")
excepto SMTPException:
print ("Error: Hubo un error al enviar su correo electrónico")
Asegurar sus correos electrónicos
Si tiene la intención de utilizar Python en un entorno del mundo real para enviar correos electrónicos, es importante asegurarse de que la comunicación sea segura en ambos extremos.
El uso de un servidor SMTP simple con el puerto predeterminado no proporciona ninguna capa de cifrado a la comunicación. Esto significa que si un tercero está escuchando en su red, puede acceder a sus credenciales de inicio de sesión y a la información contenida en su correo electrónico.
Una forma de evitar este problema es utilizar el protocolo TLS (Transport Layer Security) para cifrar su comunicación. Este es el mismo protocolo utilizado por los principales clientes de correo electrónico, como Gmail y Outlook, para garantizar que sus correos electrónicos nunca caigan en las manos equivocadas.
Para hacerlo, necesitamos realizar algunos cambios menores en el programa que creamos anteriormente.
El primer paso, por supuesto, es importar el ssl biblioteca junto con smtplib. los ssl La biblioteca le brinda la capacidad de crear un contexto SSL seguro y comunicarse a través de una red encriptada conectándose a puertos específicos en ambos extremos.
Un contexto SSL seguro no es más que una colección de cifrados, versiones de protocolo, certificados confiables, opciones TLS y extensiones TLS.
Después de esto, podemos especificar el puerto TLS y agregar algunos ssl funciones de la biblioteca para crear un correo electrónico seguro.
El código, con todos los cambios realizados, se parece a esto:
importar smtplib, ssl
smtpServer = "smtp.gmail.com"
puerto = 587
myEmail = "[email protected]"
contraseña = "my_password"
# correo electrónico y contraseña también pueden ser campos de entrada de usuario
context = ssl.create_default_context ()
newEmail = De: De Persona
Para: A Persona
Asunto: Prueba de correo electrónico
Este es el cuerpo del correo electrónico.
tratar:
servidor = smtplib. SMTP (smtpServer, puerto)
server.starttls (contexto = contexto)
server.login (newEmail, contraseña)
excepto la excepción como e:
print ("no se pudo enviar el correo electrónico")
finalmente:
server.quit ()
Como antes, debe crear y usar la instancia SMTP en un bloque try-except para evitar bloqueos abruptos del programa.
Qué puede hacer con este script de Python
Ahora que ha adquirido la habilidad asombrosa y sorprendentemente útil de automatizar correos electrónicos usando código, puede aplicarla a cualquier plataforma que requiera enviar correos electrónicos a una lista de correo diversa.
Desde usarlo en su sitio web personal para enviar correos electrónicos de reconocimiento automatizados hasta usarlo para enviar tarjetas de Navidad por correo electrónico o invitaciones a su familia y amigos, los usos de este pequeño script de Python están limitados solo por su propio creatividad.
Además, esta es solo una de las muchas cosas increíbles que puede hacer con Python. Con su soporte omnipresente para desarrolladores y su sintaxis fácil de aprender, adquirir una habilidad en Python nunca ha sido tan fácil.
Para seguir creando cosas interesantes con código, consulte nuestra guía sobre cómo construye tu propio bot de Telegram con Python 3!
Actualice sus habilidades de programación y desarrollo web en Python, Inteligencia Artificial, Keras, PyTorch y más
- Programación
- Gmail
- Sugerencias por correo electrónico
- Pitón
- Automatización de tareas
Yash es un aspirante a estudiante de informática al que le encanta construir cosas y escribir sobre todo lo relacionado con la tecnología. En su tiempo libre, le gusta jugar al Squash, leer una copia del último Murakami y cazar dragones en Skyrim.
Suscríbete a nuestro boletín
¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!
Un paso más…!
Confirme su dirección de correo electrónico en el correo electrónico que le acabamos de enviar.