使用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
相关产品推荐
相关产品推荐

