Python - SMTP

Simple Mail Transfer Protocol (SMTP) - это протокол, который обрабатывает отправку электронной почты и ее маршрутизацию между почтовыми серверами.

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

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

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

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

  • Сообщение - сообщение в виде строки , отформатированной как указано в различном РЛКЕ.

пример

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

#!/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"

Здесь вы поместили основное электронное письмо в сообщение, используя тройную кавычку, позаботившись о правильном форматировании заголовков. Электронная почта требуетFrom, To, а Subject заголовок, отделенный от тела письма пустой строкой.

Для отправки почты вы используете smtpObj для подключения к SMTP-серверу на локальном компьютере. Затем используйте метод sendmail вместе с сообщением, адресом отправителя и адресом назначения в качестве параметров (даже если адреса отправителя и получателя находятся в самом электронном письме, они не всегда используются для маршрутизации почты).

Если у вас нет SMTP-сервера на вашем локальном компьютере, вы можете использовать smtplib- клиент для связи с удаленным SMTP-сервером. Если вы не используете службу веб-почты (например, gmail или Yahoo! Mail), ваш провайдер электронной почты должен предоставить вам данные сервера исходящей почты, которые вы можете им предоставить, а именно:

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

Отправка электронного письма в формате HTML с помощью Python

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

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

пример

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

#!/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"