Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Python - Enviando e-mail usando SMTP

Página anteriorPróxima página
O SMTP (Simple Mail Transfer Protocol) é um protocolo que trata do envio de e-mail e do roteamento de e-mail entre servidores de e-mail.

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

Aqui está uma sintaxe simples para criar um objeto SMTP, que pode ser usado posteriormente para enviar um e-mail −
import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

Aqui está o detalhe dos parâmetros -

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 -

Exemplo


Aqui está uma maneira simples de enviar um e-mail usando o script Python. Experimente uma vez -
#!/usr/bin/python

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, tomando o cuidado de formatar os cabeçalhos corretamente. Um e-mail requer um De , Para , e Assunto cabeçalho, separado do corpo do e-mail com uma linha em branco.

Para enviar o e-mail você usa smtpObj para se conectar ao servidor SMTP na máquina local e então use o sendmail juntamente com a mensagem, o endereço de e o endereço de destino como parâmetros (mesmo que os endereços de e para estejam dentro do próprio e-mail, eles nem sempre são usados ​​para rotear e-mails).

Se você não estiver executando um servidor SMTP em sua máquina local, poderá usar smtplib cliente para se comunicar com um servidor SMTP remoto. A menos que você esteja usando um serviço de webmail (como Hotmail ou Yahoo! Mail), seu provedor de e-mail deve ter fornecido os detalhes do servidor de e-mail de saída para que você possa fornecê-los, como segue −
smtplib.SMTP('mail.your-domain.com', 25)

Enviando 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. Mas o Python oferece a opção de 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 conjunto de caracteres para enviar um e-mail HTML.

Exemplo


A seguir está o exemplo para enviar conteúdo HTML como um e-mail. Experimente uma vez -
#!/usr/bin/python

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"

Enviando anexos como um e-mail


Para enviar um e-mail com conteúdo misto é necessário definir Content-type cabeçalho para multipart/mixed . Em seguida, as seções de texto e anexo podem ser especificadas dentro dos limites .

Um limite é iniciado com dois hífens seguidos por um número exclusivo, que não pode aparecer na parte da mensagem do e-mail. Um limite final indicando a seção final do e-mail também deve terminar com dois hífens.

Os arquivos anexados devem ser codificados com o pack("m") função para ter codificação base64 antes da transmissão.

Exemplo


Segue o exemplo, que envia um arquivo /tmp/test.txt como um anexo. Experimente uma vez -
#!/usr/bin/python

import smtplib
import base64

filename = "/tmp/test.txt"

# Read a file and encode it into base64 format
fo = open(filename, "rb")
filecontent = fo.read()
encodedcontent = base64.b64encode(filecontent)  # base64

sender = '[email protected]'
reciever = '[email protected]'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person <[email protected]>
To: To Person <[email protected]>
Subject: Sending Attachement
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (marker, marker)

# Define the message action
part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (body,marker)

# Define the attachment section
part3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(filename, filename, encodedcontent, marker)
message = part1 + part2 + part3

try:
   smtpObj = smtplib.SMTP('localhost')
   smtpObj.sendmail(sender, reciever, message)
   print "Successfully sent email"
except Exception:
   print "Error: unable to send email"

python

  1. Tipos de dados Python
  2. Operadores Python
  3. Instrução de passagem do Python
  4. Argumentos da função Python
  5. Dicionário Python
  6. Manipulação de Exceções do Python Usando a instrução try, except e finally
  7. Biblioteca Python do sensor de temperatura TMP006 usando Raspberry pi,
  8. Sensor de temperatura Python e Raspberry Pi
  9. Python Average:Como encontrar a AVERAGE de uma lista em Python
  10. Troque duas variáveis ​​Python sem usar uma terceira