Небольшая проблема, связанная с удобством использования: было бы несложно добавить проверку пустого поля заголовка «Subject» перед передачей и выводить диалог с запросом на подтверждение, чтобы дать пользователю второй шанс заполнить заголовок. Чаще всего заголовок с темой оставляется пустым непреднамеренно. Такую же проверку можно было бы выполнять для поля заголовка «To», однако существуют вполне допустимые ситуации, когда этот заголовок остается пустым (сообщение отправляется по адресам в заголовках «Cc» и «Bcc»).
Более точ ное уда ле ние дубли ка тов адре сов по лу ча те лей
В текущей реализации операция отправки пытается удалить повторяющиеся адреса получателей, используя операции с множествами. Этот прием работает, но он может быть неточным, когда один и тот же адрес электронной почты встречается дважды с разными компонентами имен (например, «name1 <eml>, name2 <eml>»). Для достижения более высокой точности можно было выполнить полный анализ адресов получателей, извлекая и сравнивая только компоненты адресов. Однако не совсем ясно, что сле ду ет делать, когда один и тот же адрес электронной почты появляется с разными именами. Может быть, несколько человек совместно используют одну и ту же учетную запись? Если нет, тогда какое имя использовать?
Сейчас в редких случаях может потребоваться вмешательство конечного пользователя или почтового сервера. В большинстве случаев другие клиенты электронной почты наверняка сумеют обработать имена непротиворечивыми способами. Кроме того, операция создания ответа удаляет повторяющиеся адреса перед заполнением поля заголовка «Cc» точно таким же упрощенным способом, и обе операции, отправки и создания ответа, могли бы сравнивать строки без учета регистра символов при фильтрации повторяющихся адресов.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011