fbpixel
Etiquetas: ,

Um dos principais interesses das linguagens de programação, tais como Python, é automatizar tarefas como o envio de correio. Neste tutorial veremos como escrever um programa Python para enviar um e-mail a partir de uma conta Gmail.

Este tutorial pode ser aplicado a qualquer computador, incluindo um Raspberry Pi.

Para enviar e-mails do microcontrolador compatível com Arduino. Pode ler este tutorial.

Material

  • Computador ou Raspberry Pi
  • Conta Gmail

Como funciona

Para enviar um correio com Python, utilizaremos o SMTP (Simple Mail Transfer Protocol), pelo que utilizaremos um servidor que gere o envio de correio. Tal como o servidor smtp do Gmail. Para utilizar este servidor, é necessária uma conta Gmail (criação gratuita) e é necessário activar a validação em duas etapas.

Configuração de conta Gmail

Na página de gestão de contas, vá para o separador ‘Segurança’, depois procure a caixa ‘Iniciar sessão no Google’.

Adicionar validação em duas etapas.

connexion-a-google Enviar um email a partir de um guião Python

Gerar uma palavra-chave de acesso à conta para uma determinada aplicação

generate-application-password Enviar um email a partir de um guião Python

Tudo o que tem de fazer é copiar o ID do utilizador (o endereço Gmail) e a palavra-passe emitida pelo Google (inserção amarela acima) para o código Python abaixo.

Esta função é deliberadamente simplificada para mostrar o envio de correio, mas é possível modificá-la para enviar diferentes assuntos, corpo de mensagens e informações.

Código

Para gerir o protocolo STMP, utilizaremos a biblioteca stmplib que pode instalar com o comando

pip install smtplib

Para uma reutilização mais fácil do código, criámos a EmailSenderClass para facilitar o envio de correio. Não se esqueça de substituir o endereço do destinatário “destinataire@email.com” pelo seu próprio na parte inferior do guião no

email.sendHtmlEmailTo("Admin","destinataire@email.com","Ceci est un mail automatique envoyé à partir d'un script Python.")
#!/usr/bin/env python
# -*- coding: utf-8 -*-

#Libraries
import sys
import smtplib

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
from email.header import Header
from email.utils import formataddr

EMAIL_HTML_TEMPLATE="""<html>
				  <head>
				  </head>
				  <body>
					<p style ="margin: 5px 0;line-height: 25px;">Bonjour {},<br>
					<br>
					Ceci est un mail au format html.
					<br>
					{}
					<br>
					Bien à vous,<br>
					{} <br>
					</p>
				  </body>
				</html>
				"""


class EmailSenderClass:

	def __init__(self):
		""" """
		self.logaddr = "<gmail address>"
		self.fromaddr = "contact@domaine.com"# alias
		self.password = "<gmail app password"#


	def sendMessageViaServer(self,toaddr,msg):
		# Send the message via local SMTP server.
		server = smtplib.SMTP('smtp.gmail.com', 587)
		server.starttls()
		server.login(self.logaddr, self.password)
		text = msg.as_string()
		server.sendmail(self.fromaddr, toaddr, text)
		server.quit()
			
				

	def sendHtmlEmailTo(self,destName,destinationAddress,msgBody):
		#Message setup
		msg = MIMEMultipart()
		 
		msg['From'] =  "Me<"+self.fromaddr+">"
		msg['To'] = destinationAddress
		msg['Subject'] = "Hello mail"
		
		hostname=sys.platform
		
			
		txt = EMAIL_HTML_TEMPLATE
		
		txt=txt.format(destName,msgBody,hostname)
		
		#Add text to message
		msg.attach(MIMEText(txt, 'html'))
		
		print("Send email from {} to {}".format(self.fromaddr,destinationAddress))
		self.sendMessageViaServer(destinationAddress,msg)



if __name__ == "__main__":
	email= EmailSenderClass()
	email.sendHtmlEmailTo("Admin","destinataire@email.com","Ceci est un mail automatique envoyé à partir d'un script Python.")

Resultado

Depois de executar o guião, deverá receber o e-mail descrito no programa na sua caixa de entrada.

raspberrypi-email-sender-result Enviar um email a partir de um guião Python

Fontes