Python - SMTP

O protocolo SMTP (Simple Mail Transfer Protocol) é um protocolo que lida com o envio de e-mail e o roteamento de e-mail entre servidores de e-mail.

Python fornece smtplib módulo, que define um objeto de sessão de cliente SMTP que pode ser usado para enviar e-mails a qualquer máquina da Internet com um daemon listener SMTP ou ESMTP.

Um objeto SMTP tem um método de instância chamado sendmail, que normalmente é usado para fazer o trabalho de enviar uma mensagem. Leva três parâmetros -

  • O remetente - uma string com o endereço do remetente.

  • Os destinatários - uma lista de strings, uma para cada destinatário.

  • A mensagem - uma mensagem como uma string formatada conforme especificado nas várias RFCs.

Exemplo

Esta é uma maneira simples de enviar um e-mail usando o script Python. Experimente uma vez -

#!/usr/bin/python3
import smtplib
sender = '[email protected]'
receivers = ['[email protected]']
message = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: SMTP e-mail test
This is a test e-mail message.
"""
try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"

Aqui, você colocou um e-mail básico na mensagem, usando aspas triplas, cuidando para formatar os cabeçalhos corretamente. Um e-mail requer umFrom, To, e um Subject cabeçalho, separado do corpo do e-mail por uma linha em branco.

Para enviar o e-mail, use smtpObj para se conectar ao servidor SMTP na máquina local. Em seguida, use o método sendmail junto com a mensagem, o endereço de e o endereço de destino como parâmetros (embora os endereços de e para estejam dentro do próprio e-mail, eles nem sempre são usados ​​para encaminhar o e-mail).

Se você não estiver executando um servidor SMTP em sua máquina local, poderá usar o cliente smtplib para se comunicar com um servidor SMTP remoto. A menos que você esteja usando um serviço de webmail (como gmail ou Yahoo! Mail), seu provedor de e-mail deve ter fornecido a você os detalhes do servidor de correio de saída que você pode fornecer, da seguinte maneira -

mail = smtplib.SMTP('smtp.gmail.com', 587)

Envio de um e-mail HTML usando Python

Quando você envia uma mensagem de texto usando Python, todo o conteúdo é tratado como texto simples. Mesmo se você incluir tags HTML em uma mensagem de texto, ela será exibida como texto simples e as tags HTML não serão formatadas de acordo com a sintaxe HTML. No entanto, o Python oferece uma opção para enviar uma mensagem HTML como uma mensagem HTML real.

Ao enviar uma mensagem de e-mail, você pode especificar uma versão Mime, tipo de conteúdo e o conjunto de caracteres para enviar um e-mail em HTML.

Exemplo

A seguir está um exemplo para enviar o conteúdo HTML como um e-mail. Experimente uma vez -

#!/usr/bin/python3
import smtplib
message = """From: From Person <[email protected]>
To: To Person <[email protected]>
MIME-Version: 1.0
Content-type: text/html
Subject: SMTP HTML e-mail test
This is an e-mail message to be sent in HTML format
<b>This is HTML message.</b>
<h1>This is headline.</h1>
"""
try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, receivers, message)         
   print "Successfully sent email"
except SMTPException:
   print "Error: unable to send email"