Python - Enviar e-mail através do GMail com anexos PDF Imprimir E-mail
Artigos - Programação
Escrito por Wagner Barongello   
Qua, 13 de Agosto de 2008 21:20

Este artigo mostrará como estabelecer uma conexão segura (SSL) com o SMTP do GMail e enviar e-mails com anexos. O e-mail é enviado com Relay (com identificação) e pode ter inúmeras aplicações, um bom exemplo disso é um script que envia logs para você.

 

Segue abaixo o código comentado e uma breve explicação:

# Módulos necessários para a conexão, formatação e envio do e-mail
import smtplib
import os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders

# Procedimento para enviar o e-mail
def enviar_email(de, para, assunto, mensagem, arquivos=[], servidor='localhost'):
	# Certifica-se de que as variáveis passadas apra a função são listas
	assert type(para) == list
	assert type(arquivos) == list

	# Cria o objeto da mensagem
	msg = MIMEMultipart()
	# Define o cabeçalho
	msg['From'] = de
	msg['To'] = COMMASPACE.join(para)
	msg['Date'] = formatdate(localtime=True)
	msg['Subject'] = assunto

	# Atacha o texto da mensagem
	msg.attach(MIMEText(mensagem))

	# Atacha os arquivos
	for f in arquivos:
		parte = MIMEBase('application', 'octet-stream')
		parte.set_payload(open(f, 'rb').read())
		Encoders.encode_base64(parte)
		parte.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(f))
		msg.attach(parte)

	# Conecta ao servidor SMTP
	smtp = smtplib.SMTP(servidor, 587)
	smtp.ehlo()
	smtp.starttls()
	smtp.ehlo()
	# Faz login no servidor
	smtp.login('USUARIO', 'SENHA')
	# Envia o e-mail
	smtp.sendmail(de, para, msg.as_string())
	# Desconecta do servidor
	smtp.close()

enviar_email('meu_email', ['email_1', 'email_2', 'email_3', ...], 'Assunto', 'Mensagem', ['arquivo1.txt', 'arquivo2.txt', 'arquivo3.txt', ...], 'smtp.gmail.com')

 

Não esqueça de alterar dentro da função o USUÁRIO para o seu nome de usuário e a SENHA para a sua senha.


Para utilizar, basta chamar:

enviar_email('
 Este endereço de e-mail está protegido contra spambots. Você deve habilitar o JavaScript para visualizá-lo.
 ', ['lista destinatários'], 'Assunto', 'Mensagem', ['lista de anexos'], \
'servidor smtp')