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

使用Ruby mail gem读取含inbox在内所有文件夹的邮件方法

Ruby mail gem 读取非inbox文件夹邮件解决方案

你使用的mail (2.7.1)版本原生支持IMAP协议下自定义文件夹读取,无需额外依赖,具体实现方式如下:

1. 基础IMAP连接配置

require 'mail'

# 全局配置IMAP连接参数
Mail.defaults do
  retriever_method :imap, 
    address:    "你的邮箱IMAP服务地址",
    port:       993,
    user_name:  "你的邮箱账号",
    password:   "你的邮箱授权码/密码",
    enable_ssl: true
end

2. 读取指定文件夹邮件

调用Mail.find时传入folder参数指定目标文件夹名称即可,示例如下:

# 读取sent文件夹所有未读邮件
sent_unread = Mail.find(what: :unread, folder: 'sent')

# 读取cC文件夹所有邮件(含已读)
cc_all = Mail.find(what: :all, folder: 'cC')

# 遍历邮件内容
sent_unread.each do |mail|
  puts "主题:#{mail.subject}"
  puts "发件人:#{mail.from&.first}"
  puts "正文:#{mail.text_part&.body || mail.body}"
end

3. 常见问题处理

如果调用时提示文件夹不存在,可先通过底层IMAP实例获取当前邮箱所有文件夹的正确名称:

# 获取IMAP连接实例
imap_conn = Mail.retriever_method.connection
# 打印所有文件夹名称
imap_conn.list('', '*').each do |f|
  puts "可用文件夹:#{f.name}"
end

操作完成后建议主动关闭连接,避免占用邮箱服务的连接配额:

Mail.retriever_method.close_connection

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 00:54:02