» Início » Programação » Python e Zope » Enviando email
 
Avaliação: Não avaliado | Publicado em: 18/02/2008
Enviando email
Fred Jader Desenvolvedor web desde os 12 anos, Frederico Jader hoje em dia atua como diretor de arte e administrador de portais em geral, tendo como mais novo projeto o site www.gamesnahora.com


Python tem uma biblioteca chamada smtplib que permite o envio de e-mails de forma simples. Segue um código de exemplo:

CÓDIGO

import smtplib

try:
msg = {}
msg[['From']] = "de@provedor.com.br"
msg[['To']] = "para@provedor.com.br"
msg[['Subject']] = "Assunto"
msg[['Mensagem']] = "corpo da mensagem"

servidor = smtplib.SMTP() #Cria um objeto SMTP
smtpserver = "smtp.servidor.com.br" #String com o nome do servidor
print "Conectando..."
servidor.connect(smtpserver, 25) #Conecta-se ao servidor
print "Enviando..."
texto = "From: %s
To: %s
Subject: %s
%s" % (msg[['From']], msg[['To']], msg[['Subject']], msg[['Mensagem']])
servidor.sendmail(msg[['From']], msg[['To']], texto)
print "Desconectando..."
servidor.quit() #Desconecta-se do servidor
except Exception, e:
print "Erro: %s" % e #Caso tenha ocorrido algum erro, o mesmo será tratado e mostrado
else:
print "Concluído!" #Caso não tenha ocorrido erro algum


A única observação a ser feita é no caso da linha que define o nosso objeto "texto". É importante notar que no método sendmail só passamos o remetente e o destinatário, além do texto da mensagem. Porém, e o assunto, onde entra? E mesmo o destinatário que é passado ali não fica na mensagem (fica como 'Nenhum'). Por isso usei o terceiro parâmetro (que seria só a mensagem) para passar todos os dados (From, To, Subject e a própria mensagem). Basta apenas colocar cada um deles em uma linha (por isso o
para pular a linha) e deixar a mensagem por último.
Para servidores SMTP que precisam de autenticação (boa parte deles hoje em dia está requisitando isso) você pode colocar o seguinte (depois da linha 'servidor.connect(smtpserver, 25)'):

CÓDIGO

print "Autenticando..."
servidor.login("email@provedor.com.br", "senha")


Em alguns provedores o nome de usuário não é o seu próprio email, mas sim apenas um nome único, portanto basta mudar ali se for o caso.

Qualquer dúvida, correção ou sugestão sobre a dica acima, envie para washingtonj@openlink.com.br. Happy Pythonnin'!