You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用imaplib获取Gmail邮件的UUID格式消息ID?

获取Gmail专属邮件UUID(X-GM-MSGID)的方法

没问题!你提到的那个类似1614fcf57d5cb6ec1的UUID其实是Gmail特有的邮件标识——X-GM-MSGID,和你现在通过mail.get('Message-id')拿到的标准Message-ID(带域名的那种ID)完全是两个东西。

用imaplib确实能拿到这个Gmail专属ID,关键是要在邮件获取时明确请求Gmail的IMAP扩展字段,具体步骤如下:

1. 确认Gmail IMAP环境

首先得确保你连接的是Gmail的IMAP服务器(imap.gmail.com,端口993,启用SSL),并且你的Gmail账号已经在设置里开启了IMAP访问(路径:账号设置 → 转发和POP/IMAP → 启用IMAP)。如果是2FA账号,记得用应用专用密码登录,而不是原密码。

2. 主动请求X-GM-MSGID字段

在调用imaplib的fetch方法时,必须明确指定要获取X-GM-MSGID这个扩展字段。它返回的是十进制数值,你需要把它转换成十六进制字符串,就是你在PDF链接里看到的那种格式。

代码示例

import imaplib

# 连接Gmail IMAP服务器
mail = imaplib.IMAP4_SSL('imap.gmail.com', 993)
# 2FA账号请用应用专用密码替代原密码
mail.login('your-gmail@gmail.com', 'your-app-password')
mail.select('inbox')  # 可替换为其他文件夹,比如'Sent'

# 搜索邮件,这里以获取第一封邮件为例
typ, msg_ids = mail.search(None, 'ALL')
first_msg_id = msg_ids[0].split()[0]

# 获取X-GM-MSGID字段
typ, data = mail.fetch(first_msg_id, '(X-GM-MSGID)')

# 解析并转换格式
if data:
    # 返回数据格式类似 [b'1 (X-GM-MSGID 1689234567890123456)']
    raw_msgid = data[0].decode().split()[-1].strip('()')
    decimal_msgid = int(raw_msgid)
    # 转成十六进制字符串,就是你要的UUID格式
    hex_msgid = format(decimal_msgid, 'x')
    print(f"Gmail专属邮件UUID: {hex_msgid}")

# 清理连接
mail.close()
mail.logout()

补充说明

  • X-GM-MSGID是Gmail独有的IMAP扩展字段,其他邮件服务商不支持这个标识。
  • 转换后的十六进制字符串和你在PDF链接里看到的UUID完全一致,可以直接用来构造对应的Gmail邮件查看链接。

内容的提问来源于stack exchange,提问作者r1299597

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:59:57