A maioria dos meus amigos sabem que estou ajudando a Associação Python Brasil a organizar a PythonBrasil[6]. Dia 23 de agosto se encerra a chamada de trabalhos, então resolvi enviar um email para todas as comunidades de tecnologias relacionadas a python no Brasil. Mas como?
Bom, eu poderia ter feito uma mala direta com o BROffice, ou feito um crossposting adicionando todos os endereços no campo "para:" ou no campo "cc:" só que pensei que isso ia demostrar uma preguiça e as pessoas que participam das listas poderiam achar anti-ético.
Então eu me inscrevi em todas as listas e ao invés de enviar um email para cada lista, resolvi fazer uma das coisas que eu mais gosto, resolvi programar em Python.
O resultado, é esse script simples que resolvi compartilhar no meu blog.
Exemplo de CSV:
"grupy-pr@googlegroups.com","Grupo de usuarios Python","Parana"
Envio de email:
#!/usr/bin/env python
# -*- coding=utf-8 -*-
template_msg = '''
Presados amigos do %(grupo)s %(local)s !!!
Esta mensagem e um lembrete para avisar que o periodo para envio de trabalhos para
a PythonBrasil[6] esta chegando ao fim no dia 23 de agosto, proxima segunda-feira.
Essa eh a sua chance de mostrar para a comunidade o que voce tem feito com Python!
Envie sua proposta e colabore com o evento.
http://www.pythonbrasil.org.br/2010/saiba-mais/noticias/aberta-a-chamada-de-trabalhos-para-a-pythonbrasil-6
A Associacao Python Brasil e a Comunidade Python Brasileira ficam muito agradecidas.
'''
import csv
# http://docs.python.org/library/email-examples.html
# Import smtplib for the actual sending function
import smtplib
# Import the email modules we'll need
from email.mime.text import MIMEText
# Open a plain text file for reading. For this example, assume that
# the text file contains only ASCII characters.
#fp = open(textfile, 'rb')
# Create a text/plain message
#msg = MIMEText(fp.read())
#fp.close()
def process(row):
# me == the sender's email address
# you == the recipient's email address
msg = MIMEText(template_msg % {'grupo':row[1],
'local':row[2]})
msg['Subject'] = 'Lembrete chamada de trabalhos PythonBrasil[6]'
msg['From'] = 'ramiroluz@gmail.com'
msg['To'] = row[0]
# Send the message via our own SMTP server, but don't include the
# envelope header.
s = smtplib.SMTP('localhost')
s.sendmail('ramiroluz@gmail.com', [row[0]], msg.as_string())
s.quit()
if __name__ == '__main__':
'''A dica para usar o modulo csv é a seguinte:
>>> import csv
>>> help(csv.reader)
'''
f = open('enderecos.csv')
csv_reader = csv.reader(f)
for row in csv_reader:
process(row)
f.close()
Simples assim. Será enviado um email para cada endereço da lista. Use com responsabilidade. :)




4 comentários: Enviando emails com Python
18 de agosto de 2010 17:52
Báh Ramiro, era o que eu precisava para divulgar alguns eventos aqui, o tal do "SPAM AMIGO". Atualmente tenho umas listas no Thunderbird, mas com certeza esse script vai ajudar MUITO.
Valeu...
Razer.
18 de agosto de 2010 18:00
Que legal, precisando de ajuda é só falar.
19 de agosto de 2010 04:41
Muito bom! Também preciso de um script desses às vezes.
28 de junho de 2011 06:03
Caro Ramiro,
Estou começando a programar em python e estou gostando muito. Eu estou trabalhando em um sistema que monitora um site de informações e quero que quando um evento ocorra ele dispare um e-mail para uma série de pessoas previamente selecionadas.
Eu dividi o sistema em várias partes para eu poder entender melhor como funciona cada uma delas. Já consegui acessar os dados, pesquisar neles, e agora estou tentando enviar os e-mails. Pesquisando na net achei o seu blog e vi aquela postagem de como enviar e-mails. Contudo quando tento executar ele retorna o erro:
File "C:\Python25\lib\smtplib.py", line 695, in sendmail
raise SMTPRecipientsRefused(senderrs)
SMTPRecipientsRefused: {'dbcerqueira@yahoo.com.br': (550, ' No such user here')}
Você pode me ajudar?
Desde já agradeço.
Postar um comentário