许多Telegram用户希望将邮件的重要通知或内容自动发送到聊天窗口,以便在一个地方集中处理。虽然Telegram官方并未直接提供“邮件发送到聊天”的按钮,但通过强大的Bot API,你可以构建自己的邮件转发通道。本文将深入解析官方机制,并给出两种简单易行的实现方案,帮助你轻松打通邮件与Telegram。
一、Telegram邮件发送消息的官方机制解析
Telegram的官方Bot API允许你通过HTTP请求发送消息、管理群组、接收更新等。虽然没有现成的“邮件接口”,但你可以创建一个机器人,然后利用邮件服务触发API调用,将邮件内容转化为Telegram消息。这正是官方支持且推荐的扩展方式,不违反服务条款。
二、准备工作:创建Bot并获取聊天ID
- 打开Telegram,搜索@BotFather,发送
/newbot,按提示输入名称和用户名,即可获得一个Bot Token(格式类似123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)。 - 将Bot添加到目标聊天(群组或频道)。如果是群组,需要将Bot设为管理员(至少授予“发送消息”权限);如果是频道,则直接添加为管理员。
- 获取聊天ID:向Bot发送一条消息,然后访问
https://api.telegram.org/bot<你的Token>/getUpdates,在返回的JSON中找到chat对象的id,该值即为chat_id。也可以使用@userinfobot查询。
三、方式一:使用Google Apps Script实现邮件转发(免服务器)
Google Apps Script是一款云端脚本工具,可以免费运行,适合中小流量场景。
- 访问
script.google.com,新建项目,并部署为“网络应用”。 - 在“编辑器中”输入以下代码,替换
BOT_TOKEN和CHAT_ID:
function sendToTelegram(message) {
var token = 'BOT_TOKEN';
var chatId = 'CHAT_ID';
var url = 'https://api.telegram.org/bot' + token + '/sendMessage';
var data = {
'chat_id': chatId,
'text': message
};
return UrlFetchApp.fetch(url, {
'method': 'post',
'payload': data
});
}
function forwardEmailToTelegram() {
var threads = GmailApp.getInboxThreads(0, 10); // 最近10封邮件
for (var i in threads) {
var messages = threads[i].getMessages();
for (var j in messages) {
var msg = messages[j];
if (!msg.isUnread()) continue;
var content = '发件人:' + msg.getFrom() + '\n主题:' + msg.getSubject() + '\n摘要:' + msg.getPlainBody().substring(0, 500);
sendToTelegram(content);
msg.markRead();
}
}
}
- 设置时间触发器(例如每5分钟运行一次
forwardEmailToTelegram),后保存并授权即可。
四、方式二:使用Python脚本搭建自主可控的邮件网关
如果你需要更多自定义功能(如过滤、格式处理),可以使用Python脚本部署在自己服务器或树莓派上。
- 安装依赖:
pip install imapclient email requests - 编写脚本,监听指定邮箱的未读邮件,将邮件内容发送到Telegram。
import imapclient, email, requests, time
# 配置
IMAP_SERVER = 'imap.example.com'
USER = 'you@example.com'
PASS = 'your_password'
BOT_TOKEN = 'BOT_TOKEN'
CHAT_ID = 'CHAT_ID'
while True:
try:
c = imapclient.IMAPClient(IMAP_SERVER)
c.login(USER, PASS)
c.select_folder('INBOX')
ids = c.search('UNSEEN')
for id_ in ids:
raw = c.fetch(id_, ['BODY[]'])
mail = email.message_from_bytes(raw[id_][b'BODY[]'])
subject, from_ = mail.get('Subject'), mail.get('From')
body = ''
if mail.is_multipart():
for part in mail.walk():
if part.get_content_type() == 'text/plain':
body = part.get_payload(decode=True).decode(errors='ignore')
break
else:
body = mail.get_payload(decode=True).decode(errors='ignore')
text = f"📬 新邮件\n发件人:\n主题:\n内容:{body[:500]}"
requests.post(f'https://api.telegram.org/bot/sendMessage', data={'chat_id': CHAT_ID, 'text': text})
c.add_flags(id_, '\\Seen')
c.logout()
except Exception as e:
print('错误:', e)
time.sleep(30)
- 将脚本放入后台运行(如使用systemd或screen),即可实现邮件到达后约30秒内推送到Telegram。
五、注意事项与优化建议
- 隐私保护:确保邮箱密码和Bot Token安全,不要公开到GitHub。
- 频率限制:Telegram Bot API有消息频率限制(一般30条/秒),正常邮件量无需担心。
- 格式处理:提取邮件正文时建议移除HTML标签,并截断超长内容。
- 二次验证:如果你邮箱启用了两步验证,请使用应用专用密码登录IMAP。
六、总结
虽然Telegram官方没有原生邮件转发功能,但通过Bot API和简单的脚本,你可以轻松实现“邮件到聊天”的自动化流程。不论是用Google Apps Script免服务器,还是用Python自建网关,都完全在Telegram官方允许的范围内。希望本指南能帮助你高效管理邮件通知,让Telegram成为真正的工作与生活中心。