fbpixel
Etiquetas: ,
0
(0)

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.

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

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.

Fontes

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?