Работа с клиентом командной строки pymail2

rabota s klientom komandnoj stroki pymail2 Сценарии на стороне клиента

Как и оригинал, эта программа используется в интерактивном режиме. Вывод этой версии почти идентичен выводу оригинальной версии, поэтому не будем углубляться в его описание. Ниже приводится листинг сеанса работы со сценарием. Запустите его на своем компьютере, чтобы получить информацию из первых рук:

C:\\PP4E\Internet\Email> pymail2.py

user: PP4E@learning-python.com

loading headers

Connecting

Password for PP4E@learning-python.com on pop.secureserver.net?

b’+OK <24460.1273347818@pop15.prod.mesa1.secureserver.net>’

1  of 7

2   of 7

3   of 7

4   of 7

5   of 7

6   of 7

7   of 7

load headers exit

[Pymail email client]

1:       1860 bytes

From =>lutz@rmi.net

To =>pp4e@learning-python.com

Date =>Wed, 5 May 2010 11:29:36 -0400 (EDT)

Subject =>I’m a Lumberjack, and I’m Okay

2:       1408 bytes

From =>lutz@learning-python.com

To =>PP4E@learning-python.com

Date =>Wed, 05 May 2010 08:33:47 -0700

Subject =>testing

3:       1049 bytes

From =>Eric.the.Half.a.Bee@yahoo.com

To =>PP4E@learning-python.com

Date =>Thu, 06 May 2010 14:11:07 -0000

Subject =>A B C D E F G

4:       1038 bytes

From =>Eric.the.Half.a.Bee@aol.com

To =>nobody.in.particular@marketing.com

Date =>Thu, 06 May 2010 14:32:32 -0000

Subject =>a b c d e f g

5:       957 bytes

From =>PP4E@learning-python.com

To =>maillist

Date =>Thu, 06 May 2010 10:58:40 -0400

Subject =>test interactive smtplib

[Press Enter key]

6:       1037 bytes

From =>Cardinal@hotmail.com

To =>PP4E@learning-python.com

Date =>Fri, 07 May 2010 20:32:38 -0000

Subject =>Among our weapons are these

7:       3248 bytes

From =>PP4E@learning-python.com

To =>PP4E@learning-python.com

Date =>Sat, 08 May 2010 19:26:22 -0000

Subject =>testing mailtools package

[Pymail] Action? (i, l, d, s, m, q, ?) l 7 load 7

Connecting

b’+OK <20110.1273347827@pop07.prod.mesa1.secureserver.net>’

Here is my source code

[Pymail] Action? (i, l, d, s, m, q, ?) d 7

[Pymail] Action? (i, l, d, s, m, q, ?) m

From? lutz@rmi.net

To? PP4E@learning-python.com

Subj? test pymail2 send

Type message text, end with line="."

Run away! Run away!

.

Sending to[‘PP4E@learning-python.com’] From: lutz@rmi.net

To: PP4E@learning-python.com

Subject: test pymail2 send

Date: Sat, 08 May 2010 19:44:25 -0000

Run away! Run away!

Send exit

[Pymail] Action? (i, l, d, s, m, q, ?) q

To be deleted: [7]

Delete?y

Deleting messages from server

deleting mails

Connecting

b’+OK <11553.1273347873@pop17.prod.mesa1.secureserver.net>’

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

C:\\PP4E\Internet\Email> pymail2.py

user: PP4E@learning-python.com

loading headers

Connecting

…часть строк опущена…

[Press Enter key]

6:       1037 bytes

From =>Cardinal@hotmail.com

To =>PP4E@learning-python.com

Date =>Fri, 07 May 2010 20:32:38 -0000

Subject =>Among our weapons are these

7:       984 bytes

From =>lutz@rmi.net

To =>PP4E@learning-python.com

Date =>Sat, 08 May 2010 19:44:25 -0000

Subject =>test pymail2 send

[Pymail] Action? (i, l, d, s, m, q, ?) l 7

load 7

Connecting

b’+OK <31456.1273348189@p3pop01-03.prod.phx3.gdg>’

Run away! Run away!

[Pymail] Action? (i, l, d, s, m, q, ?) l 7

Run away! Run away!

[Pymail] Action? (i, l, d, s, m, q, ?) q

Изучите программный код сценария pymail2, чтобы глубже проникнуть в его суть. Вы увидите, что в этой версии исчезли некоторые сложности, такие как ручное форматирование текста электронного письма. Кроме того, она иначе выводит текст письма — вместо того чтобы вслепую выводить полный текст сообщения (вместе со всеми вложениями), она с помощью mailtools извлекает и выводит первую текстовую часть сообщения. Использованные здесь сообщения слишком просты, чтобы увидеть разницу, но при чтении писем с вложениями новая версия более избирательна к тому, что следует отобразить.

Кроме того, так как интерфейс к электронной почте инкапсулирован в модули пакета mailtools, при необходимости что-то изменить в нем достаточно будет внести изменения только в конкретный модуль независимо от того, как много клиентов электронной почты используют эти инструменты. А поскольку программный код пакета mailtools используется совместно, то если известно, что он работает в одном клиенте, можно быть уверенными, что он будет работать и в другом — отпадает необходимость отлаживать новый программный код.

С другой стороны, сценарий pymail2 на самом деле не использует всю мощь ни пакета mailtools, ни лежащего в его основе пакета email. Например, сценарий вообще никак не обрабатывает вложения и интернационализированные заголовки, не поддерживает синхронизацию почтового ящика входящих сообщений, и иногда декодированный текст основной части, подготовленный к выводу, может содержать символы, несовместимые с терминалом. Чтобы увидеть возможности пакета email в полном объеме, необходимо исследовать более крупную систему электронной почты, такую как PyMailGUI или PyMailCGI. Первая из них является темой следующей главы, а со второй мы познакомимся в главе 16. Однако перед этим коротко рассмотрим еще несколько дополнительных инструментов для работы с клиентскими протоколами.

Использованная литература:

Марк Лутц — Программирование на Python, 4-е издание, II том, 2011

Каталог сайтов Всего.ру
Оцените статью
Секреты программирования
Добавить комментарий