Simple Mail Transfer Protocol (SMTP) — это протокол, который обрабатывает отправку электронной почты и маршрутизацию электронной почты между почтовыми серверами.
Python предоставляет модуль smtplib, который определяет объект сеанса SMTP-клиента, который может использоваться для отправки почты на любой интернет-компьютер с демоном-прослушивателем SMTP или ESMTP.
Самый простой вариант для создания одного SMTP-объекта, который позже можно использовать для отправки электронного письма.
|
1 2 3 |
import smtplib smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] ) |
Вот подробная информация о параметрах −
хост − это хост, на котором работает ваш SMTP-сервер. Вы можете указать IP-адрес хоста или доменное имя, например tutorialspoint.com. Это необязательный аргумент.
порт − если вы предоставляете аргумент host, то вам нужно указать порт, через который прослушивается SMTP-сервер. Обычно этот порт равен 25.
local_hostname − Если ваш SMTP-сервер запущен на вашем локальном компьютере, то в качестве этой опции вы можете указать только localhost .
Объект SMTP имеет метод экземпляра под названием sendmail, который обычно используется для выполнения работы по отправке сообщения. Он принимает три параметра −
Отправитель − строка с адресом отправителя.
Получатели − список строк, по одной для каждого получателя.
Сообщение − это сообщение в виде строки, отформатированное так, как указано в различных RFC.
Примечание: Избегайте использования Gmail, потому что это высокозащищенный сервер, и заставить его работать довольно сложно. Фактически, большинство, если не все примеры в Интернете, демонстрирующие, как отправлять электронные письма с помощью сервера Gmail, не работают. Вместо этого используйте серверы разработки или общий сервер веб-хостинга.
Пример
Вот простой способ отправить одно электронное письмо с помощью скрипта Python
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import smtplib sender = 'from@fromdomain.com' receivers = ['to@todomain.com'] message = """From: From Person <from@fromdomain.com> To: To Person <to@todomain.com> 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" |
Здесь мы поместили в message обычное электронное письмо, заключив его в тройные кавычки и позаботившись о правильном форматировании заголовков. Для электронного письма требуется заголовок «От», «Кому» и «Тема», отделенный от тела электронного письма пустой строкой.
Для отправки почты вы используете smtpObj для подключения к SMTP-серверу на локальном компьютере, а затем используете метод sendmail вместе с сообщением, адресом from и адресом назначения в качестве параметров (хотя адреса from и to указаны в самом электронном письме, они не всегда используются для маршрутизации почты).