技能标识:qq-mail-reader
读取QQ邮箱邮件。使用IMAP协议连接QQ邮箱,支持多种编码解析。触发场景:用户要求查看邮箱、读取邮件、查看最近邮件、筛选特定邮件等。
通过 IMAP 协议读取 QQ 邮箱邮件。
用户提到以下场景时使用:
需要提前配置 QQ 邮箱 IMAP:
MAILUSER=youremail@qq.com
MAILPASS=yourauth_code
python
import imaplib
import email
from email.header import decode_header
IMAP_HOST = imap.qq.com
IMAP_PORT = 993
def connect_mail(user, password):
mail = imaplib.IMAP4SSL(IMAPHOST, IMAP_PORT)
mail.login(user, password)
mail.select(INBOX)
return mail
python
python
def decodeheadervalue(header_value):
兼容多种编码的解码
if not header_value:
return
decoded_parts = []
for content, encoding in decodeheader(headervalue):
if isinstance(content, bytes):
try:
decoded = content.decode(encoding if encoding else utf-8)
except:
# 尝试其他常见编码
for enc in [gbk, gb2312, utf-8, big5, latin1]:
try:
decoded = content.decode(enc)
break
except:
decoded = content.decode(utf-8, errors=ignore)
else:
decoded = str(content)
decoded_parts.append(decoded)
return .join(decoded_parts)
邮件正文可能包含 HTML,需要清理:
python
import re
def gettextbody(msg):
body =
if msg.is_multipart():
for part in msg.walk():
if part.getcontenttype() == text/html:
payload = part.get_payload(decode=True)
encoding = part.getcontentcharset() or utf-8
body = payload.decode(encoding, errors=ignore)
break
else:
payload = msg.get_payload(decode=True)
encoding = msg.getcontentcharset() or utf-8
body = payload.decode(encoding, errors=ignore)
# 清理HTML标签
text = re.sub(r<[^>]+>, , body)
text = text.replace( , )
text = text.replace(&, &)
text = re.sub(r\s+, , text)
return text
根据用户需求过滤邮件,常见关键词类型:
以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:
帮我安装 SkillHub 和 qq-mail-reader-1776122528 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 qq-mail-reader-1776122528 技能
skillhub install qq-mail-reader-1776122528
文件大小: 2.53 KB | 发布时间: 2026-4-14 12:08