Skip to content

Instantly share code, notes, and snippets.

@yagop
Last active December 19, 2022 13:04
Show Gist options
  • Star 7 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save yagop/9852651 to your computer and use it in GitHub Desktop.
Save yagop/9852651 to your computer and use it in GitHub Desktop.
Script en Python para enviar correos personalizados a varias personas mediante Gmail (SMTP)
ANONIMO PÉREZ SE OMITE mail@dominio.es
ANONIMO PÉREZ SE OMITE mail@dominio.es
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
import smtplib, sys, re
from email.mime.text import MIMEText
""""
Script para enviar un correo a varias personas especificadas en un
archivo. Dicho archivo tiene que estar en codificación UTF-8 si no, se
envian carácteres raros. El nombre debe de estar separado por una
tabulación del resto.
Cambiad las variables del main() acorde con vuestro servidor SMTP
"""
__author__ = "Yago Pérez Sáiz"
__license__ = "GPL"
__version__ = "0.99"
__email__ = "yagoperezs@gmail.com"
__status__ = "Production"
# Devuelve un array con los destinatarios en diccionario:
# destinatario['nombre'] y destinatario['email']
def get_detinatarios(textfile):
destinatarios = []
# El fichero de donde lee los correos y nombres
file = open(textfile, 'rb')
lines = file.readlines()
for line in lines:
destinatario = {}
# Están separados por tabulaciones
# EG: ANONIMO FERNANDEZ LORENZO mail@domain.com
line_words = line.split(' ')
destinatario['nombre'] = line_words[0]
# Esto encuentra un email en una cadena
match = re.search(r'\w+@\w+(\.\w+)+', line)
destinatario['email'] = match.group()
destinatarios.append(destinatario)
return destinatarios
def send_email(smtpserver, login, password, msg):
server = smtplib.SMTP(smtpserver)
server.starttls()
server.login(login, password)
problems = server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()
def main():
destinatarios = get_detinatarios('Destinatarios.txt')
smtpserver = 'smtp.gmail.com:587'
login = 'NIA@alumnos.uc3m.es'
password = 'PASSSWORD!!!!'
preg = "¿Deseas enviar "+str(len(destinatarios))+" correos? [y/N] "
respuesta = raw_input(preg)
if (respuesta != 'y' and respuesta != 'Y'):
print "saliendo..."
exit()
# Recorre los destinatarios
for destinatario in destinatarios:
mensaje = """
¡¡Hola """+ destinatario['nombre'] + """ !!
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do \
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad \
minim veniam, quis nostrud exercitation ullamco laboris nisi ut \
aliquip ex ea commodo consequat.
"""
msg = MIMEText(mensaje)
msg['Subject'] = "Subject"
msg['From'] = 'NAME <name@domain.com>'
msg['To'] = destinatario['email']
send_email(smtpserver, login, password, msg)
print msg
print 'Enviado a ' + destinatario['email']
if __name__ == "__main__":
main()
@ronaldmiguelsh
Copy link

Buenas tardes amigos, una consulta.

Este código que has publicado, ¿En que versión de Python? (2.7 ó 3.7), muchas gracias.

@Daniet
Copy link

Daniet commented Feb 12, 2020

Buenas tardes amigos, una consulta.

Este código que has publicado, ¿En que versión de Python? (2.7 ó 3.7), muchas gracias.

Hay está en python 2.7

@asierbarran
Copy link

Gracias!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment