bloco de notas

editado por eloi ribeiro

Como enviar um correio electronico com python 2009-05-25

Arquivado em: python — Eloi @ 07:53

Deixo aqui uma pequena função em python para enviar correios com ou sem ficheiros em anexo. Eu costumo utilizar-la para determinados scripts que demoram muito em terminar, estando varias horas em funcionamento. Assim estando já fora do trabalho e com acesso ao correio posso saber em que estado se encontra ou se terminou com sucesso determinado script.

Nota: alterar a linhas 10 e 25 com o correio e palavra-chave correspondente. E o servidor SMTP é do gmail, só exprimentei com este. O codigo é o seguinte:

import os
import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders

def enviar_correio(para, assunto, mensagem, anexo):
    msg = MIMEMultipart()
    msg['From'] = 'o_meu_correio@gmail.com'
    msg['To'] = para
    msg['Subject'] = assunto
    if mensagem != '':
        msg.attach(MIMEText(mensagem))
    part = MIMEBase('application', 'octet-stream')
    if anexo != '':
        part.set_payload(open(anexo, 'rb').read())
        part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(anexo))
        msg.attach(part)
    Encoders.encode_base64(part)
    mailServer = smtplib.SMTP("smtp.gmail.com", 587)
    mailServer.ehlo()
    mailServer.starttls()
    mailServer.ehlo()
    mailServer.login(msg['From'], 'palavra-chave do teu correio')
    mailServer.sendmail(msg['From'], para, msg.as_string())
    mailServer.close()
    print 'Correio enviado'

# exemplo para enviar correio sem mensagem e sem anexo
enviar_correio('correio_destino@servidor.com', 'assunto', '', '')
# exemplo para enviar correio com mensagem e com anexo
enviar_correio('correio_destino@servidor.com', 'assunto', 'mensagem', '/home/utilizador/anexo.pdf')
 

Leave a Reply