Отправка вложений по электронной почте




ТЕМА 4: «PYTHON: отправка электронной почты с использованием SMTP»

Краткий курс лекции

 

Простой протокол передачи почты (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-сервер. Вы можете указать IP-адрес хоста или доменное имя, например, tutorialspoint.com. Это необязательный аргумент.

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

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

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

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

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

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

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

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

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

Пример

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

#!/usr/bin/python3

 

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"

Здесь вы разместили в сообщении основную электронную почту, используя тройную кавычку, стараясь правильно отформатировать заголовки. Для электронного письма требуются заголовок «От», «Кому» и «Тема», отделенные от тела письма пустой строкой.

Для отправки почты вы используете 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 <from@fromdomain.com>

To: To Person <to@todomain.com>

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"

Отправка вложений по электронной почте

Чтобы отправить электронное письмо со смешанным содержимым, необходимо установить заголовок Content-type в multipart / mixed. Затем текст и разделы вложений могут быть указаны в границах.

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

Вложенные файлы должны быть закодированы с помощью функции pack (“m”), чтобы кодирование base 64 перед передачей.

 

 

Вопросы самоконтроля

· В какой кодировке работает почта Python

· Что такое ваш SMTP-сервер

· Как отправить электронную почту

Практическое задание

1. E-mail подготовка и отправка

· Подготовьте работающий пример

· Отправьте короткое письмо на свой электронный адрес

2. Коротко описать все действия, которые выполняет программа

Рекомендованная литература:

Интернет: CoderLesson.com Самоучитель Python



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-05-22 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: