Рубрики
Без рубрики

Отправка электронных писем с Python

Простой протокол передачи почты (SMTP) – это протокол, который обрабатывает отправку электронной почты и маршрутизации e-mail … Помечено SMTP, Python, автоматизация.

Простой протокол передачи почты (SMTP) – это протокол, который обрабатывает отправку электронной почты и электронной почты по электронной почте между почтовыми серверами.

Python предоставляет модуль SMTPLIB, который определяет объект сеанса клиента SMTP, который можно использовать для отправки почты на любой интернет-машина с демоном слушателя SMTP или ESMTP.

Вот простой синтаксис для создания одного объекта SMTP, который позже может использоваться для отправки электронной почты.

import smtplib

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

Вот деталь параметров –

хозяин – Это хост работает ваш SMTP-сервер. Вы можете указать IP-адрес хоста или доменного имени, такого как TutorialSpoint.com. Это необязательный аргумент.

порт – Если вы предоставляете аргумент хоста, вам нужно указать порт, где SMTP-сервер прослушивает. Обычно этот порт будет 25.

local_hostname – Если ваш SMTP-сервер работает на вашем локальном компьютере, то вы можете указать только localhost по сравнению с этой опцией.

Объект SMTP имеет метод экземпляра, называемый sendmail, который обычно используется для работы по почте сообщение. Требуется три параметра –

Отправитель – строка с адресом отправителя.

Приемники – список строк, один для каждого получателя.

Сообщение – сообщение в качестве строки, отформатированной, как указано в различных RFC.

Пример здесь – простой способ отправить одно электронное письмо с помощью сценария Python. Попробуйте это один раз –

#!/usr/bin/python

import smtplib

sender = 'from@fromdomain.com'
receivers = ['to@todomain.com']

message = """From: From Person 
To: To Person 
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"

Здесь вы поместили основную электронную почту в сообщении, используя Triple Quote, ухожу на правильность форматирования заголовков. Электронная почта требует заголовка от, до и темы, отделенного от тела электронной почты с пустой строкой.

Чтобы отправить почту, вы используете SMTPOBJ для подключения к SMTP-серверу на локальном компьютере, а затем используйте метод SendMail вместе с сообщением, из адреса, а также адреса назначения в качестве параметров (даже если из и для адресов находятся внутри -Мал, они не всегда используются для маршрутизации почты).

Если вы не используете SMTP-сервер на локальной машине, вы можете использовать клиент SMTPLIB для связи с удаленным SMTP-сервером. Если вы не используете услугу веб-почты (например, Hotmail или Yahoo! Почта), ваш поставщик электронной почты должен был придать вам данные обходящего почтового сервера, которые вы можете поставить их, как следует –

smtplib.SMTP('mail.your-domain.com', 25)

Отправка HTML Email с помощью Python Когда вы отправляете текстовое сообщение с помощью Python, то все содержимое рассматриваются как простой текст. Даже если вы включите теги HTML в текстовом сообщении, он отображается как простые теги текста и HTML не будут отформатированы в соответствии с синтаксисом HTML. Но Python предоставляет возможность отправить HTML-сообщение в качестве фактического HTML-сообщения.

При отправке сообщения электронной почты вы можете указать версию MIME, тип контента и набор символов для отправки HTML E-mail.

Пример

Ниже приведен пример для отправки HTML Content в качестве электронной почты. Попробуйте это один раз –

#!/usr/bin/python

import smtplib

message = """From: From Person 
To: To Person 
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

This is HTML message.

This is headline.

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

Отправка вложений как электронная почта Для отправки электронной почты со смешанным контентом требуется установить заголовок типа Content в MultiArp/Misser. Тогда текстовые и секции вложения могут быть указаны в границах.

Граница запускается с двух дефисов, за которыми следуют уникальный номер, который не может появиться в сообщении частью электронной почты. Окончательная граница, обозначающая окончательный раздел электронной почты, также должен закончиться двумя дефисами.

Прикрепленные файлы должны быть закодированы с функцией Pack («M»), чтобы иметь кодировку Base64 перед передачей.

Пример

Ниже приведен пример, который отправляет файл/tmp/test.txt в качестве вложения. Попробуйте это один раз –

#!/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 = 'webmaster@tutorialpoint.com'
reciever = 'amrood.admin@gmail.com'

marker = "AUNIQUEMARKER"

body ="""
This is a test email to send an attachement.
"""
# Define the main headers.
part1 = """From: From Person 
To: To Person 
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"

Оригинал: “https://dev.to/rebelx127001/sending-mails-with-python-9e0”