制作一个telegram邮件提醒机器人[1]用电报接收及回复Gmail-电报telegram技巧分享

Telegram 邮件提示机器人

Telegram eMail bot

@author NandHyf

出于爱好和移动端没有什么太好的邮件客户端?以是实验着用Python写了一个邮件提示机器人,由于不是很理解邮件的详细原理以是为了保险接纳了POP协议拉取邮件,以是不会对信件本身有什么的危险,也是在做这个项目标时间对程序计划有了更深一步的明白,看成是个学习积聚的结果分享出来,假如嘻歡的话还请点个star?予以支持,非常谢谢?

针对这个项目标具体解读、debug总结以及总结思索欢迎进入我的个人博客或CSDN阅读相关内容

Blog?[待更新]

CSDN?[待更新]

⚠功能定位

本机器人的功能被定位为

邮件提示

,而不是吸收❌或发送邮件❌,现在它能做到的仅仅是被摆设在某个平台上,然后定时的拉取

多个信箱

✔的

多个邮件

✔,假如有新邮件则通过

一个bot

向指定的

一个


chat_id

发送一个包含基本信息的提示消息,此中同一个信箱的多个邮件会被归并为一条消息发送(固然消息内容是有做分开处置的,还是比较方便阅读的,相关内容下文会具体解说)

关于消息文本

邮件内容将被剖析并拼接为以下情势进行推送


2020-07-12 12:31:50.371531 Pulled from recipient@example.com No.1 to No.3 ------------------------- No.1: Date: Mon, 15 Jun 2020 12:57:42 0800 From: sender1@example.com Subject: Hello eMail! BodyText: 你好! 这里会是邮件的"Content-Type: text/plain"中的内容 (也就是文本的正文内容) "Content-Type: text/html"中的内容由于不能被归并为文本信息因此不会被剖析 Attachment(s): Yes, (1) author:NandHyf.txt ------------------------- No.2: Date: Tue, 16 Jun 2020 12:57:42 0800 From: sender2@example.com Subject: No bodyText && NO attachment BodyText: (None) Attachment(s): None ------------------------- No.3: Date: Wed, 17 Jun 2020 12:57:42 0800 From: sender3@example.com Subject: No bodyText && 2 attachments BodyText: (None) Attachment(s): Yes, (2) MailBot.py MailBot.toml

开始使用

在提供源码的同时我还打包了两个可实行文件,分别是对应Windows平台的

.exe

和Ubuntu20.04下这两个可实行文件无需下载其他”轮子”,直接解压后运行即可。

对于下载源码的话则需要下载分外的文件以运行程序。

以下配图的演示均为

.exe

版本的演示,内容应当与在编辑器中调试启动

并无差别

,请放心阅读。

运行源码


编写时Python版本是

3.8.3


预备工作

首先需要下载运行程序所需的文件


pip3 install toml pip3 install python-telegram-bot

然后在编辑器里调试启动要么下令行启动(大概会有点慢)

会提示缺少设置文件

MailBot.toml

,此时直接输入

"y"

就可以主动天生一个设置文件模板

创建完成后程序会主动退出,此时就可以看到在目次下面多出来一个

MailBot.toml

,这就是程序的设置文件,使用文本编辑器打开进行设置:


修改更换相关的位置好比:

  • 填入

    token



    chaId
  • 修改收取隔断

    golbalTimer



    以分钟为单位的

    int

    种类

  • 假如有多个邮箱即每个邮箱的收取隔断都是相同的

    globalTimer

    中的时间,次序由上至下以邮箱为单位依次收取、推送


  • "box1"

    更换为邮箱的备注名
  • 根据详细环境更换

    ssl

    ,

    host

    ,

    userName

    ,

    passWd

    ,

    notedNum


    • ssl

      需要根据邮箱设定进行修改,数值是

      布尔(boolean)种类

    • host

      是需要连接的

      运营商的服务器地点

      ,比方腾讯企业邮的

      host



      pop.exmail.qq.com

    • userName

      最好

      填写完备

      ,比方

      xxxxxx@qq.com

    • notedNum

      是已经提示过的邮件数目,由于本机器人只是使用累计计数的方法进行统计,不外假如不记得的话从0开始让程序实行一次事后也会主动改为最新的数值

      • 不外需要留意的是:拉取到的邮件数目

        会受到邮箱设置的影响⚠

        ,假如邮箱限定拉取为

        近来30天

        时会影响数目对应的邮件,

        大概会由于可拉取的邮件数目小于

        notedNum

        而导致不发送提示⚠

        ,但并不会影响邮箱内的邮件(由于接纳的pop协议);假如接纳机器人的话提议开启

        收取全部

        选项(一样平常在邮箱的

        "账户"

        要么

        ""收取设置"

        菜单下)

开始工作

程序会根据

MailBot.toml

中的次序以邮箱为单位依次地拉取邮件,假如拉取的数目

即是或小于

当地的

notedNum



不会进行推送

,仅打印下图中的两条信息(”SPE”和”Hyf”是我演示用的两个邮箱的备注名,即”box1″的位置)

可以看到”Hyf”邮箱的环境就是拉取得的数目小于了当地

notedNum

的数目,因此重新设定当地

notedNum

为拉取得的数目,同时打印

Set xxx's notedNum to xx

当拉取得的数目大于

notedNum

时程序也会在推送完成后将其修改为最新的数值

⚠代理错误?

固然,在调试运行的时间就出现了代理错误导致的无法发送问题,对此我的解决方案是程序中针对代理错误的不同寻常处置是先打印出问题,然后设定定时器(函数)在10秒后重新启动新一轮的拉取、推送;范畴固然还是重新从上至下地拉取每个邮箱,不外假如前面的邮箱已经成功推送的话

不会重复推送

的,由于只有推送成功后才能修改

notedNum

的值,但是确实代理错误大概会导致邮箱推送次序的差别,但个人以为并没有什么影响 。


不外假如科学上网不受影响的直接运行要么摆设在VPS上就不太大概碰到相关问题

图示:碰到代理错误:

图示:程序自行解决代理错误:

在Telegram上察看消息!

项目地点

NandHyf/Telegram-email-bot

参考资料

邮件的发送与吸收原理 – CSDN/行者-traveller Doc: poplib – POP3 protocol client Doc: telegram.bot Python3 – 菜鸟教程 Toml教程 – 龙腾道-译

欢迎一起讨论新功能?

交流讨论??heyufei@gwlk.icu

telegram怎么设置邮箱

前言

电报telegram有一个官方的机器人@Gmail Bot可用来吸收及回答Gmail邮件,使用了一个多月,基本上收到邮件就会有提示,比Gmail手机客户端推送要快,别的Gmail手机客户端要吸收邮件推送提示要不停开着同步,用电报telegram吸收算是一个很不错的途径。

  • 授权账户“AUTHORIZE ANOTHER ACCOUNT”(我!这里之前已经授权过了)
  • 这是一个比较风趣的项目,它会在当地起一个 SMTP 服务器,全部经过这个 SMTP 服务器的邮件,都市被转发至指定的 Telegram 机器人。

    用途:群晖系统通知、下载管理器的完成通知,各种内网邮件通知,固然你用在外网也不是不可以…

    用法:


    docker run \ -d \ --restart unless-stoppe!d \ --name=smtptotelegram \ -p 2525:2525 \ -e ST_TELEGRAM_CHAT_IDS=123 \ -e ST_TELEGRAM_BOT_T!OKEN=123_abc \ -e HTTP_PROXY="http://10.20.20.41:7890" \ -e HTTPS_PROXY="http://10.20.20.41:7890" \ -e NO_PROXY="127.0.0.1,192.168.0.0/24,localhost,*.local" \ kostyaesmukov/smtp_to_telegram:latest

    CHAT_ID 可以通过以下方法获取:


    curl https://api.telegram.org/bot123:abc/getUpdates {"ok":true,"result":[{"update_id":xxx, "message":{"message_id":24,"from":{"id":123,"is_bot"........}

    之后,在任何设置邮件通知的地方,添加 ip:2525 就行了,收发件人随意,不需要验证,不需要 ssl/tls,HTTP_PROXY 可以用 Clash 实现,谢谢 ep 老板。

    本文网址:

    http://www.1cm8858.com/d/202121182120_1424_2765912839/home

    Ten articles before and after

    小米10的震动效果加强!MI「手环5」开箱全新动态表盘、更多运动模式磁吸式充电以及女性健康管理只要945元-电报telegram技巧分享

    国军107年版口粮MartinOei黄世泽Telegram频道-电报telegram技巧分享

    信用证电文格式载重电报拍发-电报telegram技巧分享

    冷气电力全靠太阳能日本大姐为了省钱-电报telegram技巧分享

    涉密文件与密码电报管理制度.-电报telegram技巧分享

    拍数字电报作文800字450-电报telegram技巧分享

    记者来鸿:老行当渐成绝唱电报群注册用国内手机-电报telegram技巧分享

    testflight+banananet:苹果手机翻墙神器KuCoinAPP下载&安装教程-电报telegram技巧分享

    telegram现在提供更安全的视频通话在iOS和Android上发起一对一-电报telegram技巧分享

    channel2021最新Telegram群发营销软件-电报telegram技巧分享