Почта Telegram: как сделать бота и привязать к мессенджеру

Сергей Арсентьев image

Кому пересылка почты в телеграм может быть очень кстати:

Выбор телеграм бота для почты

Чтобы пересылать почту в телеграм понадобится специальный бот (программа). Она выглядит как обычный контакт в списке, но позволяет принимать и отправлять почту из телеги.

Я тестировал ботов: Гугл, Яндекс, сторонний сервис Etlgr.com

Краткое резюме – все они плохие

  • гугл требует для России и Ирана VPN при авторизации, да и есть подозрения что вообще гугл может отвалиться. Сам бот на английском, и довольно “деревянный”.
  • яндекс на момент написания статьи не умеет принимать (!) почту в телеграм, только отправляет (то есть пишешь в телеграм – приходит в яндекс почту), это какой-то позор нахрен вообще такой бот??
  • etlgr.com работает с любой почтой, использует специально сгенерированный емейл, вроде всё толково, но платный – хочет 1,99$ в месяц, сдурели.

Читайте также:  Защита от спама сайтов на WordPress.

Короче, помыкавшись, решил остановиться на Гугл боте для почты, так как других вариантов особо и нет.

Порядок установки

Итак, моя задача: хочу получать уведомления о приходе и расходе денег с кошелька Юмани, а также заявки с блога мгновенно в телеграм.

Сейчас уведомления приходят просто на почту с темами, вроде: “Вы заплатили из кошелька …“, “Ваш кошелек … пополнен” и “Заявка с блога …

Шаг 1

Так как для этого мне нужно принимать не все сообщения, а только избранные, то я сначала зашел на gmail.com и создал там отдельную почту для телеграма, типа новый-емейл@gmail.com

image

Шаг 2

После чего, в основной почте, куда валятся все уведомления сделал редирект (перенаправление) на новую почту новый-емейл@gmail.com

В яндекс почте это делается как на скриншоте.

Шаг 3

Затем установил телеграмовского бота как обычно. То есть кликнул по ссылке https://t.me/GmailBot, открыл её в телеграме и затем ввёл команду /start

Мне было предложено авторизоваться в gmail почте, что и надо сделать.

Обратите внимание, что для России и Ирана они требуют авторизацию через VPN.

Настройки бота

У меня некоторые письма в телеграм приходили не сразу.

Я зашел в настройки gmail бота /settings и там отметил все папки как whitelable, после чего письма в телеграм стали приходить быстрее.

Читайте также:  Обзор сервиса Турболого для создания логотипов

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

Тестируем

Теперь отправляю тестовое сообщение с темой, например, “Заявка с блога”.

Сообщение отправляется на почту, оттуда переадресуется в специально созданную gmail почту, а уже из неё в конечную телеграм.

Ушло с почты

Пришло в телеграм

Выводы и итоги

Нормальный почтовый бот для пересылки писем с почты в телеграм пока только один – @gmailbot от гугла.

Остальные или кривые, или платные, или бесперспективные.

Из яндекса мог бы получиться самый толковый бот, надеюсь его доделают и он также как и гугл сможет принимать почту в телеграме.

Telegram уже давно перерос рамки обычной программы для обмена сообщениями. Теперь это развитая экосистема, которая многим заменяет социальные сети, форумы, чаты и новостные сайты. Осталось только научить Telegram работать с почтой, тогда можно будет из него вообще не выходить.

Чтобы подружить Telegram с Gmail, необходим специальный бот. Он называется Gmail Bot и находится здесь.

После добавления бота в десктопную или мобильную версию программы необходимо его авторизовать в аккаунте Google. Для этого нажмите на кнопку Authorize Me. Появится всплывающее окно с ссылкой. Клик по ней откроет в браузере страницу авторизации в вашем аккаунте Google.

После получения разрешения бот будет готов к работе и загрузит все письма из папки «Входящие». По умолчанию отображается только краткая версия, поэтому нажмите на кнопку Show More, чтобы загрузить весь текст. Рядом находится кнопка Actions, с помощью которой можно ответить на письмо, пометить как прочитанное, удалить и так далее.

Если вы получаете много писем, то загляните в настройки бота («Команда» → Settings). Здесь можно настроить фильтры, с помощью которых Telegram будет оповещать вас только о тех письмах, которые обозначены специальными ярлыками.

Gmail Bot пригодится всем, кто использует Telegram в качестве основного рабочего инструмента. Теперь можно будет получать мгновенные уведомления о нужных письмах и отвечать на них, не покидая эту программу.

Подписаться на @gmailbot →

Почти у каждого есть несколько email-адресов – рабочий, личный, для досок объявлений, для соцсетей. И далеко не всегда мы с собой носим ноутбук. Зато планшет или смартфон обычно находятся под рукой.

Современные e-mail-client на компактных гаджетах, если их не запустить заранее, не сообщают о получении писем через почтовые сервисы. Но, оказывается, эта проблема решается с помощью messenger Telegram.

Рассмотрим, что такое почта Телеграм. Какие боты могут помочь в решении проблем с получением и отправкой писем. Существующие варианты для обычных пользователей мессенджера.

Содержание

Telegram Email bot

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

Telegram Email bot

История создания

Разработчик первого Telegram email bot в мессенджере определил, что бот должен уметь:

  • присваивать вре́менное имя почтового ящика;
  • переадресовывать входящие электронные письма в chat;
  • продлевать срок службы адреса email.

Используя различные наработки продвинутых пользователей, по образцам существующих команд автор создал бот, который позволяет принимать и отправлять письма.

Сервис получил название etlgr, имя в мессенджере – @etlgr_bot.

Для чего используется

Этот бот, к сожалению, не может собирать письма из ящиков с разных почтовых сервисов. Он создает новый адрес, который и будет отслеживать.

Bot фильтрует спам, присылает уведомления о каждом полученном сообщении, позволяет открыть анонимный ящик, например, для общения в группе Telegram. Также с помощью этого сервиса можно отправлять письма из Телеграм на электронную почту любого абонента.

Etlgr

Функционирование бота-почтовика

При решении скачать онлайн или установить etlgr требуется подписать «Условия использования», которые регламентируют правила применения сервиса.

В частности, бесплатно можно получить:

  • на один account Телеграм только 1 электронный адрес;
  • возможность читать сообщения на веб-странице по прямой ссылке;
  • рекламные материалы в письмах.

Стоимость платного использования бота 1,99 $ в месяц или 14,99 $ в год. При этом исключаются рекламные рассылки, организован просмотр сообщения в Телеграм. Но здесь решать только пользователю, сколько стоит его комфорт.

Алгоритм работы

Процесс применения бота для платных и бесплатных абонентов прост и прозрачен:

  • найти через поиск в мессенджере (search) bot;
  • установить etlgr, найдя его по имени в Телеграм или скачав по ссылке в интернете;
  • запустить, получить личный email-адрес в форме ххх@eltr.com.

После этих шагов сразу можно отправлять письма из Telegram, применять слэш-команды для отсылки email или настройки конфигурации параметров обработки.

Команды

Наладка канала производится с помощью специальных команд. Сразу скажем, что bot не запрашивает ничего самостоятельно. Для того чтобы настраивать его, необходимо не только знать нужные наборы символов, но и понимать, в какой последовательности и когда их вводить:

  1. Первая команда подается при нажатии кнопки «Подключиться». В диалоговой строке появляется /start.
  2. Затем надо набрать /register. Результат – присвоение имени нового почтового ящика.
  3. Если необходимо сменить язык связи с bot, то вводим в строку сообщений /lang.

На этом активация бота заканчивается. Последующие команды подаются для настройки удобного приема и отправки сообщений:

  • обработка тела входящего письма производится с помощью /body_rules;
  • если надо изменить формат месседжей, набирается /msg_format;
  • при необходимости выбора из нескольких ящиков и отправки информации получателю вводится /send.

Узнать список своих адресов позволяет команда /addresses. Удалить ненужный можно, написав в строке для сообщений /release.

Gmail Bot для Telegram

Когда нет возможности сменить адрес электронной почты, а получать уведомления в Телеграм жизненно важно, поможет @GmailBot.

Этот сервис позволяет читать и отправлять письма с бесплатного gmail. Для регистрации требуется ввести пароль.

Если на gmail нет аккаунта, то его легко добавить. Зато это «железобетонный» способ получать сообщения со всех существующих ящиков – yahoo, yandex, mail.

Gmail Bot для Telegram

Для этого в аккаунте Гугл надо привязать почтовые адреса других серверов.

Могут возникнуть вопросы при подключении 2-го аккаунта. Часто возникают проблемы с почтой yandex. При этом советы типа активировать «прием всех писем POP3» не помогают. Тогда достаточно написать в техподдержку (to support) gmail, и они быстро решают проблему c присоединением почтового сервиса Яндекс.

Подключение mailbot бесплатное.

Для любого пользователя сети этот telegram email – самый удобный сервис.

Единственная проблема – связываются все адреса одного человека.

Создание почтового телеграм-бота с нуля

Даже люди, которые не умеют писать программы, могут сотворить Telegram-bot самостоятельно. Это гораздо проще, чем зарегистрировать proxy.

Надо выполнить следующие действия:

  • найти в messenger системного бота @BotFather и запустить его;
  • создать команду /newbot;
  • присвоить имя новому bot, которое заканчивается символами «bot» или «_bot»;
  • подключить его к веб-сервису PuzzleBot;
  • копируем API-ключ из клиента Телеграм и вставляем его в соответствующее окно в личном кабинете;
  • затем для построения сервиса переходим в конструктор и моделируем необходимые параметры.
@BotFather

Когда телеграм-бот почта создан, все пароли и настройки надо сохранить в облако, лучше в самом Telegram (Избранное).

Возможность получать уведомления о письмах в Телеграм, принимать почту в одном канале – очень удобный сервис, решающий большое количество вопросов.

Можно установить бот etlgr или gmailbot. Выбор зависит от целей пользователя.

Если ни один из предлагаемых bot не удовлетворяет потребностей абонента, можно создать собственный сервис отслеживания сообщений, используя @BotFather.

В любом случае только Телеграм позволяет объединить почту с мессенджером.

Ну поскольку Telegram это не просто мессенджер, а целая платформа, то там можно найти всякое. Вот, например, Email внутри.

Ссылка на проект https://wwpager.com/ 

Основной функционал:

  • Приём и отправка email;
  • Временный адрес электронной почты;
  • Веб-доступ к почте (включается и отключается через бот);
  • Записная книжка;
  • Персональный email-ящик на домене;
  • Можно снести весь ящик одним кликом (слабо вериться, что реально вся информация уйдет в никуда)

Конечно, забавная вещь. Очень радует, что таких проектов всё больше и больше. Но, как вариант с электронной почтой на постоянной основе — мне очень сложно представить.

Печалит тот факт, что я зарегистрировал почту bite-byte@telega.email, а получить доступ к web-интерфейсу так и не смог. Это грустно.

Отвратительным минусом стало, что в каждом отправленном и принятом (!!!!!) присутствует реклама. Реклама ещё сомнительного содержания.  Конечно, её можно отключить за 3 руб/день ~90 руб/мес. Но это не такой необходимый сервис за который стоит платить. Да, пускай копеечку, но это глупо.

Применению данного бота найти можно. Например, настроить пересылку каких-то важных сообщений себе сразу в телеграмм. Но это уже из пальца высосано.  Я оставил бота для временных ящиков, которые иногда бывают нужны.

Тем, кому интересен email внутри telegram есть же нормальное решение от Gmail  gmail бот.

С одной стороны, исторически сложилось, что многие сервисы в Unix/Linux уведомляют администратора о проблемах через электронную почту.

В качестве примеров можно привести cron, smartd и mdadm.

В самописных фоновых или долго выполняющихся сценариях неудачное завершение также не помешает сопровождать отправкой уведомлений, например:

Failed() { echo "$@" | mail -s "${0##*/} failed on $(hostname -f)" root logger -p user.err -t "${0##*/}" -- "$@" exit 1 }  first_command || Failed "first_command"  second_command || Failed "second_command"  third_command || Failed "third_command"

Разумеется, имея больше одного сервера, такую почту удобнее просматривать не локально, а централизованно.

С другой стороны, надёжная доставка почты в Интернете требует большого количества настроек, без которых письма либо вообще не дойдут до получателя, либо попадут в спам.

И наконец, электронная почта стремительно вытесняется системами мгновенной доставки сообщений: имеющими высокую скорость, простые протоколы взаимодействия и почти повсеместную распространённость.

С учётом изложенного, имеет смысл не собирать служебную почту в почтовый ящик, а настроить шлюз для доставки в Telegram.

Параметры Telegram:

В Телеграме нам потребуется зарегистрировать бота для отправки и получить token, а также узнать числовой идентификатор получателя (Chat ID).

Здесь проще сослаться на существующую документацию, чем пытаться сочинять свою:

  • создание бота и получение токена: https://tlgrm.ru/docs/bots#botfather;
  • определение Chat ID: найдите в Телеграме бота JsonDump и напишите ему что-нибудь.

Разумеется, шлюз надо размещать на сервере, у которого гарантированно не возникнет проблем с доступом к https://api.telegram.org из-за национальных систем фильтрации трафика.

Настройка шлюза:

Гугл находит две готовых реализации:

Обе написаны на Golang. Первую из них мы проверили в работе и остались довольны.

Однако было решено написать вместо неё собственную утилиту, чтобы (а) уменьшить занимаемое на диске место в 10000 раз (с 10,7 мегабайт до 1140 байт) и (б) получить потенциальную гибкость для расширения (например, добавить в дальнейшем поддержку нескольких recipient_email_address=>TgChatId).

Забегая вперёд, имеет смысл отметить, что при выполнении smtp_to_telegram занимает в ОЗУ вдвое меньше места, чем наша утилита на Python (13 мегабайт против 26), хотя отчасти это компенсируется наличием других запущенных Python-утилит (в т.ч. tuned, networkd-dispatcher и т.д.), потому что ОЗУ под значительную часть среды выполнения выделяется системой однократно, независимо от числа использующих её процессов.

Пишем собственный вариант:

Этот файл следует сохранить как /usr/local/bin/smtp2tg и сделать исполняемым:

#!/usr/bin/python  import os import io import asyncore import requests               # yum install python-requests import smtpd from datetime import datetime  # Optional: listen_addr = os.environ['SMTP2TG_LISTEN_ADDR'] if 'SMTP2TG_LISTEN_ADDR' in os.environ else 'localhost' listen_port = os.environ['SMTP2TG_LISTEN_PORT'] if 'SMTP2TG_LISTEN_PORT' in os.environ else 2525 # Required: bot_token   = os.environ['SMTP2TG_BOT_TOKEN'] chat_id     = os.environ['SMTP2TG_CHAT_ID']  class smtp2tg(smtpd.SMTPServer):     def process_message(self, peer, mailfrom, rcpttos, data, mail_options=None, rcpt_options=None):         nowstr   = datetime.now().strftime('%Y-%m-%d %H:%M:%S')         markdown = '**%s:**nn%s' % (mailfrom, data.decode("utf-8"))         msgfmt   = 'https://api.telegram.org/bot%s/sendMessage?chat_id=%s&parse_mode=Markdown&text=%s'         response = requests.get(msgfmt % (bot_token, chat_id, markdown))         print("%s -- from=%s to=%s response=%sn" %             (nowstr, mailfrom, rcpttos, response.json()))  server = smtp2tg((listen_addr, int(listen_port)), None) print("Started on %s:%s..." % (listen_addr, listen_port))  try:     asyncore.loop() except KeyboardInterrupt:     pass

Чтобы уменьшить и упростить исходный текст, а также повысить безопасность, необходимые для работы параметры передаются не через командную строку, а через переменные окружения SMTP2TG_xx.

Сценарий проверен на совместимость с Python 2.7 и 3.6. Из дополнительных пакетов требуется только python-requests (или python3-requests), который называется одинаково и Debian/Ubuntu, и в CentOS.

При написании пришлось столкнуться со следующими проблемами:

  • В отличие от большинства сетевых сервисов, модуль smtpd не позволяет заканчивать строки в запросах сокращённой односимвольной последовательностью “n” и понимает только полную двухсимвольную “rn”. Поэтому для тестирования надо запускать netcat с ключом “-C”, а socat с флагом “crlf”, и только telnet заработает правильно без дополнительных настроек (но потребует явную задержку, потому что без неё закроет сетевое соединение сразу, как только получит EOF из stdin, и не успеет из-за этого принять из сети ответ):
  • Python не требует явно объявлять тип, но отказывается автоматически преобразовывать его даже в очевидных ситуациях, поэтому для listen_port и data необходимо ручное преобразование (из str в int и из ByteArray в str соответственно).
  • Если в системе включён IPv6 и для localhost в /etc/hosts есть строки “127.0.0.1” и “::1”, без параметра SMTP2TG_LISTEN_ADDR сценарий слушает только “::1” без 127.0.0.1
  • И самое главное — в стандартной документации метод “process_message” содержит неверный набор параметров — без mail_options и rcpt_options (но эту ошибку успели найти до нас).

Автоматический запуск:

Сервис для systemd будет выглядеть так:

[Unit] Description=SMTP to Telegram Gateway Documentation=https://cdnnow.ru/blog/smtp2tg After=nss-lookup.target After=network.target  [Service] User=smtp2tg Environment='SMTP2TG_LISTEN_ADDR=0.0.0.0' Environment='SMTP2TG_BOT_TOKEN=885500333:AAaabbcc_ddeeffgghhSSWW88hhnnzzkkQQ' Environment='SMTP2TG_CHAT_ID=77113355' ExecStart=/usr/local/bin/smtp2tg  [Install] WantedBy=multi-user.target

Сохраните его в файл /etc/systemd/system/smtp2tg.service, активируйте и запустите, предварительно создав псевдопользователя:

  • useradd -d /nonexistent -s /bin/false -r smtp2tg
  • systemctl daemon-reload
  • systemctl enable smtp2tg
  • systemctl start smtp2tg
  • systemctl status smtp2tg

Настройка отправителей почты:

Нам нужен любой консольный клиент (т.е. предоставляющий команду mail) и любой агент доставки почты, умеющий использовать relay:

apt-cache search mailx apt-cache search mail-transport-agent

В Debian/Ubuntu мы предпочитаем для этого следующую связку:

apt install dma bsd-mailx

Для CentOS в стандартных репозиториях нет готового пакета dma, но он собран в repo.cdnnow.pro:

yum install https://repo.cdnnow.pro/pub/linux/centos/7/x86_64/cdnnow-release-1-1.cdnnow.el7.noarch.rpm yum install dma mailx

В /etc/dma/dma.conf обязаны присутствовать следующие строки:

SMARTHOST 10.20.30.40 PORT 2525

IP-адрес должен указывать на сервер, на котором запущен smtp2tg. В данном случае рекомендуется использовать именно IP-адрес, т.к. это позволит сохранить работоспособность при проблемах с DNS.

Проверка:

echo This is test 1 | mail -s test1 qwe@asd.org

Email получателя может быть любым — шлюз в любом случае отправит сообщение пользователю Telegram, указанному в SMTP2TG_CHAT_ID.

Оцените статью
Рейтинг автора
4,8
Материал подготовил
Егор Новиков
Наш эксперт
Написано статей
127
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий