如何在Gmail中获取显示表情符号实体代码(非象形图)的原始邮件文本及实现表情符号过滤?
我来一步步帮你解决这几个问题:
1. 在Gmail中直接查看原始邮件文本(含emoji/Goomoji的传输格式)
完全可以!Gmail自带查看原始邮件的功能,这正是你需要的SMTP传输/审核阶段的原始内容:
- 打开目标邮件,点击右上角的三个点图标(更多选项)
- 选择「显示原始内容」
- 在打开的页面里,你会看到完整的MIME结构、邮件头,以及编码后的邮件正文——这里能看到emoji对应的Unicode字符(如果是UTF-8传输),或者quoted-printable/base64编码形式(比如
=E2=9C=94对应✅),Goomoji的文本代码(比如:smile:)也会原封不动保留,不会被转换成象形图。
2. 用CLI工具解码下载的EML文件
如果已经下载了EML格式的邮件,用CLI工具解码非常方便,推荐几个实用工具:
- munpack(属于
mime-utils包,大部分Linux发行版可通过包管理器安装):
提取邮件的纯文本内容,保留原始编码:munpack -t your_email.eml > raw_body.txt - ripmime:专门提取MIME邮件的各个部分,适合复杂邮件:
执行后会在ripmime -i your_email.eml -d email_contentsemail_contents目录里生成纯文本、HTML等部分的文件,直接查看即可看到原始编码的内容。 - 解码quoted-printable编码:如果正文是QP编码,用
qp工具(apt install qp)解码:qp -d < encoded_body.txt > decoded_body.txt
3. 修复SpamZero实现Goomoji/表情过滤
SpamZero这类旧工具失效,通常是环境依赖、API权限或表情编码逻辑过时导致的,修复思路如下:
第一步:适配运行环境
- 检查工具的
package.json,升级Node.js到当前LTS版本(比如18.x或20.x),更新依赖包(比如googleapis如果用到Gmail API),解决版本兼容问题。
第二步:修复Gmail API权限(如果工具依赖API)
- 重新在Google Cloud Console配置OAuth2凭据,确保权限范围包含
https://www.googleapis.com/auth/gmail.modify(用于修改邮件状态,比如标记垃圾),并更新工具里的凭据配置。
第三步:更新表情过滤逻辑
- 获取原始文本:从Gmail API的
raw字段(解码后)或EML解码后的文本中获取邮件正文,避免Gmail渲染后的内容。 - 识别Goomoji和emoji:
- Goomoji:用正则匹配文本格式,比如
/:[a-zA-Z0-9_]+:/g,可以扩展匹配更多自定义Goomoji规则; - Unicode emoji:用覆盖最新emoji范围的正则,比如:
const emojiRegex = /[\u{1F600}-\u{1F64F}\u{1F300}-\u{1F5FF}\u{1F680}-\u{1F6FF}\u{1F700}-\u{1F77F}\u{1F780}-\u{1F7FF}\u{1F800}-\u{1F8FF}\u{1F900}-\u{1F9FF}\u{1FA00}-\u{1FA6F}\u{1FA70}-\u{1FAFF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/gu;
- Goomoji:用正则匹配文本格式,比如
- 添加过滤规则:比如匹配到指定表情后,调用Gmail API标记为垃圾邮件、归档或删除,或者直接拦截(如果是在接收阶段处理)。
第四步:测试与调试
- 用包含不同表情/Goomoji的测试邮件验证逻辑,添加日志输出,排查编码处理或API调用的错误。
内容的提问来源于stack exchange,提问作者Jeff R




