По мотивам организации работы с файлами и документами прошлой статьи, хочу поделиться очередным личным опытом организации работы классической электронной почтой. На эту тему написано огромное количество статей с советами и способами работы с "хаосом". Но это не очередная статья с шаблонными рекомендациями - поверьте, я смогу вас удивить. Все они хороши, но в них нет главного: объяснения основ электронной почты, и соответственно почему, например, Inbox Zero естественен и прекрасен.

Предыстория

Однажды мне пришлось разрабатывать и встраивать в единую корпоративную платформу аналог почтового клиента, для официальной "проектной" переписки с подрядчиками. Вся суть в максимально автоматизированном процессе регистрации входящих писем с их последующим делегированием, подготовкой, согласованием и отправкой ответов, по единому стандарту, в единой информационной системе. Как и зачем это было сделано - сегодня не важно. Но интересно вот что - электронная почта работает не так как вы думаете! Этот опыт буквально открыл мне глаза на особенности казалось бы простого "сервиса", знакомого буквально каждому на планете.

Естественное поведение

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

Разбирая почтовый ящик, условно в подъезде - достаём письмо, читаем от кого и про что оно, если реклама выкидываем, если что-то существенное - решаем что с ним делать: выкинуть, сохранить и принять во внимание или подготовить ответ. Но никто не убирает прочитанное письмо обратно в почтовый ящик, ручкой помечая, что оно прочитано!

Так почему конкретно в электронной почте, большинство оставляет его во входящих, накапливая там тонны мусора? Я тоже раньше так делал, потому что особо и не задумывался, что можно по другому. Есть признак прочитано и ладно. Но начала напрягать необходимость введения дополнительных категорий и меток для отслеживания статуса уже прочитанных писем.

Решение пришло само собой. Я решил держать папку Входящие пустой! И ощутил какую-то эйфорию от игры, цель которой - разобрать абсолютно все входящие письма. Если я справился - я молодец, я победил: все письма обработаны, там где нужно подготовлены и направлены ответы, остальное принято во внимание или выкинуто в мусор. Но если в ней до сих пор есть письма, значит они требуют более глубокой подготовки ответа и каждый раз открывая почту, я вижу, что ещё не ответил на них, и никогда не забуду ответить, потому что автоматически в голове запускается игра "почисти ящик". Следует отметить, что обработка ящика включает и обработку особо важных вложений, а конкретно сохранение вложений в архив документов (например полисы, которые страховая присылает после оплаты или важные подписанные договоры, после чего письмо удаляется вообще - оно более неактуально).

И только в момент поиска материалов для этой статьи, я обнаружил, что этот принцип уже давно известен широкой публике и называется по-модному Inbox Zero. Гугл выдаёт много статей на эту тему, начиная с далёкого 2015 года, так что мне тут добавить особо нечего, кроме того, что я самостоятельно пришёл к нему в 2020 году, когда при переходе на "удалёнку" резко увеличилось количество электронных писем. Исходящие письма я, кстати, также сразу сортирую - папка "Отправленные" у меня тоже пуста.

Может для моей системы хранения документов прошлой статьи тоже дать модное название, например Date Active First?! Да не, бред какой-то...

Как уходят письма

Я примерно миллион раз программно, через SMTP протокол, отправлял различные электронные письма, в виде уведомлений, внутри корпоративной информационной системы. Вы когда-нибудь задумывались, что происходит при отправке письма и как оно попадает в "Отправленные"? Попробую вас удивить.

Когда мне понадобилось реализовать аналог почтового клиента, я столкнулся с неочевидной для меня проблемой - программно письма успешно отправлялись, моментально доставлялись, адресаты успешно их читали, но в папке "Отправленные" проектной корпоративной почты - они не появлялись! Моё лицо в тот момент:

Какого чёрта?
Какого чёрта?

Поскольку для отправки письма обычно требуется техническая учётная запись (хотя это совсем не обязательно, можно и без аутентификации), я всегда думал, что все отправленные письма сохраняются в папке "Отправленные" соответствующей учётной записи, а затем они автоматически очищаются, учётная запись-то техническая! Ох как же я ошибался...

Как я уже говорил, электронная почта сделана по образу и подобию "бумажной" почты, в которой вы пишите от руки письмо, затем в��ладываете в конверт, отдаёте курьеру и - следите за рукой - у вас больше нет оригинального письма! Вы же его отправили, помните? Не сделали копию - ваши проблемы... SMTP протокол - это и есть курьер, ему всё равно что вы отправляете внутри конверта, сделали ли копию, верно ли указали "кому" и "от кого", он просто курьер. И вообще может функционировать, даже при отсутствии адреса электронной почты отправителя.

Чтобы сохранить отправленное письмо, почтовые клиенты в момент получения от SMTP "курьера" заветного сообщения "принято", через специальный IMAP протокол сохраняют его в папку "Отправленные", т.е. как бы делают за вас скан-копию, которая формируется отдельным процессом, который вообще-то может завершиться ошибкой (например место закончилось, письмо улетело, но в отправленных не сохранилось).

Скрытый текст

Конечно же, сейчас есть современные http-based протоколы отправки электронных писем, которые в одном процессе гарантируют отправку и сохранение письма в "Отправленных", но под капотом они всё равно основаны на старом добром SMTP и IMAP взаимодействии.

Всё новое - забытое старое

Каким бы современным почтовым клиентом вы ни пользовались, под капотом это всё равно тот самый старый протокол из 70х, основанный на принципах работы с "бумажными" письмами, который умеет выполнять ровно одну задачу - обмениваться текстом. Не поверите, он даже не умеет передавать вложения! Чтобы передавать вложения - придумали "костыли", в виде разделителей частей текста самого письма и текста вложений. Он также не умеет связывать письма, не умеет правильно строить структуру переписки (как в современных мессенджерах), не умеет категоризировать письма и т.д. Всё перечисленное - это функции и "костыли" конкретных почтовых клиентов, а не самого почтового сервера.

И сколько бы ни придумывали функций, которые обещают разобраться с хаосом в электронной почте, я считаю - нет ничего лучше, чем осознать, что только мы сами ответственны за хаос, который случился во входящих и исходящих письмах. Если бы, как раньше, письма доставлялись за месяц, стали бы вы тратить столь дорогой и ценный ресурс, чтобы отправлять сухие поверхностные фразы или затевать спор? Явно нет. Ну так и не затевайте его в электронной почте. Что бы вы хотели сказать в исходящем письме, чтобы получить ровно ОДИН исчерпывающий ответ?!

Снежный ком

Расскажу ещё один не очевидный факт, связанный с отправкой ответов и обсуждений в электронной почте.

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

Грубо, обычно исходное текстовое HTML сообщение с длинным текстом и подписями в среднем займёт 100кб. Возьмём 10 адресатов и заставим двух пользователей затеять спор на 15 писем, каждое из которых включает текст предыдущего сообщения и новый текст на 100кб. Получается следующая картина:

  • Письмо 1: 100кб

  • Письмо 2: 200кб

  • Письмо 3: 300кб

  • ...

  • Письмо 15: 1500кб (~1.5мб)

У каждого из 10 адресатов в ящике хранятся все 15 писем. Их суммарный объём считается по формуле арифметической прогрессии: ((100 + 1500) * 15) / 2 = 12 000кб ≈ 12мб.

А для корпоративного почтового сервера этот спор занимает: 12мб × 10 пользователей = 120мб!!! И всё это ради одного пустого спора, где 90% текста - бесконечные цитаты предыдущих сообщений. И потом многие хвастаются, что у них через год закончилась квота на объём корпоративной почты, потому что много "работают".

Я в таких случаях сохраняю только последнее 15-ое входящее письмо, а остальные безжалостно удаляю, потому что последнее письмо содержит всю историю (цитаты), этого мне достаточно. И вообще стараюсь не вступать в переписки по почте. Если меня "затянули" туда, оставляю у себя в отправленных тоже только 15-ое письмо, которое содержит всю переписку и последний мой комментарий.

Заключение

На мой взгляд, во времена существования Confluence-подобных систем, обмен мнениями через электронную почту - злостный антипаттерн. До сих пор удивляюсь, что при наличии корпоративного Confluence, многие до сих пор обмениваются в почте Word-документами, которые просят прокомментировать в режиме рецензирования. Серьёзно? Сегодня существует огромное количество информационных систем, специально спроектированных под современные требования коллективной работы. Проще говоря, обсуждение должно идти в Confluence, мессенджере или Zoom, а в почту отправлять только результат работы, уведомительного характера: "На основании обсуждения, сообщаем о принятом решении...". Если при подготовке письма изначально предполагается обсуждение - сразу добавляйте в него ссылку на ту систему, где это обсуждение будет проходить.

Помните, чтобы получать меньше писем – отправляйте меньше писем!