Прежде чем перейти к сценариям, рассмотрим общий модуль, который они импортируют и используют. Модуль в примере 13.17 используется для настройки параметров электронной почты для конкретного пользователя. Это просто ряд инструкций присваивания значений переменным, используемым во всех почтовых программах, представленных в этой книге, — каждый почтовый клиент пользуется собственной версией этого модуля, благодаря чему содержимое версий может отличаться. Выделение параметров настройки в отдельный модуль упрощает настройку представленных в книге почтовых программ для использования конкретным пользователем и ликвидирует необходимость редактировать логику самих программ.
Если вы захотите пользоваться какими-либо почтовыми программами из этой книги для работы со своей электронной почтой, исправьте инструкции присваивания в этом модуле, чтобы они отражали ваши серверы, названия учетных записей и так далее (в представленном виде они соответствуют учетным записям электронной почты, использовавшимся при работе над книгой). Не все настройки из этого модуля используются в последующих сценариях. Некоторые из них будут описываться, когда мы вернемся к этому модулю в более поздних примерах.
Обратите внимание, что некоторые провайдеры могут требовать, чтобы вы подключались непосредственно к их системам для использования их серверов SMTP при отправке электронной почты. Например, в прошлом, когда я пользовался коммутируемым подключением, я мог использовать сервер моего провайдера непосредственно, но после перехода на широкополосное подключение я должен был направлять запросы через провайдера кабельного подключения к Интернету. Вам может потребоваться изменить эти настройки в соответствии с параметрами вашего подключения — обращайтесь к своему провайдеру Интернета, чтобы получить параметры доступа к серверам POP и SMTP. Кроме того, некоторые серверы SMTP могут проверять доменные имена в адресах и могут требовать проходить процедуру аутентификации — подробности смотрите в разделе, посвященном протоколу SMTP далее в этой главе.
Пример 13.17. PP4E\Internet\Email\mailconfig.py
пользовательские параметры настройки для различных программ электронной почты (версия pymail/mailtools); сценарии электронной почты получают имена серверов и другие параметры настройки из этого модуля: измените его, чтобы он отражал имена ваших серверов и ваши предпочтения;
# —-
# (требуется для загрузки, удаления: для всех) имя сервера POP3,
# имя пользователя
# —-
popservername = ‘pop.secureserver.net’
popusername = ‘PP4E@learning-python.com’
# —-
# (требуется для отправки: для всех) имя сервера SMTP
# смотрите модуль Python smtpd, где приводится класс сервера SMTP,
# выполняемого локально;
#———————————————————————
smtpservername = ‘smtpout.secureserver.net’
# —-
# (необязательные параметры: для всех) персональная информация,
# используемая клиентами для заполнения полей в сообщениях,
# если эти параметры определены;
# подпись — может быть блоком в тройных кавычках, игнорируется,
# если пустая строка;
# адрес — используется в качестве начального значения поля "From",
# если непустая строка, больше не пытается определить значение
# поля From для ответов: это имело переменный успех;
# —-
myaddress = ‘PP4E@learning-python.com’
mysignature = (‘Thanks,\n’
‘—Mark Lutz (http://learning-python.com, http://rmi.net/~lutz)’)
# —-
# (необязательные параметры: mailtools) могут потребоваться для отправки;
# имя пользователя/пароль SMTP, если требуется аутентификация;
# если аутентификация не требуется, установите переменную smtpuser
# в значение None или »; в переменную smtppasswdfile запишите имя файла
# с паролем SMTP или пустую строку, чтобы вынудить программу
# запрашивать пароль (в консоли или в графическом интерфейсе);
# —-
smtpuser = None # зависит от провайдера
smtppasswdfile = » # установите в значение », чтобы обеспечить запрос
# —-
# (необязательный параметр: mailtools) имя локального однострочного
# текстового файла с паролем pop; если содержит пустую строку или файл
# не может быть прочитан, при первом соединении пароль запрашивается
# у пользователя; пароль не шифруется: оставьте это значение пустым
# на компьютерах общего пользования;
#———————————————————————
poppasswdfile = r‘c:\temp\pymailgui.txt‘ # установите в значение ‘ # чтобы обеспечить запрос
# —-
# (обязательный параметр: mailtools) локальный файл, где некоторые клиенты
# сохраняют отправленные сообщения;
# —-
sentmailfile = r’.\sentmail.txt’ # . означает текущий рабочий каталог
#———————————————————————-
# (обязательный параметр: pymail, pymail2) локальный файл, где pymail
# сохраняет почту по запросу;
#
savemailfile = r’c:\temp\savemail.txt’ # не используется в PyMailGUI: диалог
#
# (обязательные параметры: pymail, mailtools) fetchEncoding —
# это имя кодировки, используемой для декодирования байтов сообщения,
# а также для кодирования/декодирования текста сообщения, если они
# сохраняются в текстовых файлах; подробности смотрите в главе 13:
# это временное решение, пока не появится новый пакет email,
# с более дружественным отношением к строкам bytes;
# headersEncodeTo — для отправки заголовков: смотрите главу 13;
#
fetchEncoding = ‘utf8′ # 4E: как декодировать и хранить текст сообщений
# (или latin1?)
headersEncodeTo = None # 4E: как кодировать не—ASCII заголовки при отправке
# (None=utf8)
#———————————————————————-
# (необязательный параметр: mailtools)максимальное количество заголовков
# или сообщений, загружаемых за один запрос; если указать значение N,
# mailtools будет извлекать не более N самых последних электронных писем;
# более старые сообщения, не попавшие в это число, не будут извлекаться
# с сервера, но будут возвращаться как пустые письма;
# если этой переменной присвоить значение None (или 0), будут загружаться
# все сообщения; используйте этот параметр, если вам может поступать
# очень большое количество писем, а ваше подключение к Интернету
# или сервер слишком медленные, чтобы можно было выполнить загрузку
# сразу всех сообщений; кроме того, некоторые клиенты загружают
# только самые свежие письма, но этот параметр никак не связан
# с данной особенностью;
#
fetchlimit = 25 # 4E: максимальное число загружаемых заголовков/сообщений
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011