Вернемся к операции загрузки электронной почты: поскольку она в действительности является операцией с сокетами, программа PyMail- GUI автоматически соединится с почтовым сервером, используя те возможности соединения, которые имеются на компьютере, где она выполняется. Например, если соединение с Сетью осуществляется через модем и в данный момент не установлено, Windows автоматически выведет стандартный диалог соединения. При широкополосном подключении, получившем наибольшее распространение в настоящее время, соединение с почтовым сервером обычно устанавливается автоматически.
По завершении загрузки электронной почты программа PyMailGUI заполняет прокручиваемый список в главном окне сообщениями с почтового сервера и автоматически прокручивает его до появления последнего полученного письма. На рис. 14.10 показано, как выглядит главное окно после выбора одного из сообщений и изменения размеров окна — текстовая область в середине растягивается и сжимается вместе с окном, открывая по мере увеличения все большее количество колонок.
Рис. 14.10. Главное окно PyMailGUI после изменения размеров
Технически кнопка Load (Загрузить) при первом своем нажатии загружает всю почту, а при последующих нажатиях — только вновь поступившие сообщения. PyMailGUI следит за тем, какое сообщение было загружено последним, и при последующих загрузках запрашивает только сообщения с номерами, большими последнего. Загруженная почта хранится в памяти в списке Python, чтобы не загружать ее каждый раз снова. Программа PyMailGUI не удаляет почту с сервера при загрузке. Если вы не хотите видеть какое-то письмо при загрузке в будущем, то должны явным образом удалить его.
В записях в главном списке показано лишь то, что дает пользователю представление о содержании письма, — в каждой записи выводятся части заголовков «Subject», «From», «Date», «To» и других, разделяемые символом |, и с номером POP-сообщения впереди (например, в данном списке имеется 13 сообщений). Размеры колонок определяются максимальным размером содержимого, необходимым для отображения любой записи, а набор отображаемых заголовков настраивается в модуле mailconfig. Чтобы увидеть содержимое дополнительных заголовков, таких как размер сообщения или название программы-клиента электронной почты, используйте горизонтальную прокрутку или распахните окно программы.
Как мы уже видели, основное волшебство происходит при загрузке почты с сервера — клиент (компьютер, на котором выполняется PyMailGUI) должен соединиться с сервером (где находится ваша учетная запись электронной почты) через сокет и передать байты через соединения Интернета. Если что-то пойдет не так, PyMailGUI выведет стандартный диалог с описанием ошибки и сообщит, что произошло. Например, если неправильно указать имя учетной записи или пароль (в модуле mailconfig или в диалоге ввода пароля), вы увидите сообщение, аналогичное приведенному на рис. 14.11. Здесь выводятся лишь тип и данные исключения Python. Дополнительная информация об ошибках, включая трассировку стека, выводится в стандартный поток вывода (окно консоли).
Рис. 14.11. Диалог PyMailGUI с сообщением о неверном пароле
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011