如何在Capybara-email中查看ActionMailer指定邮件及同收件人全部邮件?
解决Capybara-email查看同一邮箱多封邮件的问题
直接操作ActionMailer::Base.deliveries数组
你可以直接访问邮件投递数组获取指定邮件,再手动保存打开:
# 获取第二封邮件(数组索引从0开始,第二封对应索引1) email = ActionMailer::Base.deliveries[1] # 转换为Capybara-email的消息对象并打开 Capybara::Email::Message.new(email).save_and_open
注意:数组索引从0开始,若只有两封邮件,第一封是[0],第二封是[1],使用[2]会触发越界错误。
使用open_email的:order参数
Capybara-email的open_email方法支持:order参数指定邮件顺序,默认是:last,可改为:first或具体索引:
# 打开第一封邮件 open_email('asdf@qwer.com', order: :first) current_email.save_and_open # 用索引指定打开第二封 open_email('asdf@qwer.com', order: 1) current_email.save_and_open
遍历筛选目标邮箱的所有邮件
如果需要批量查看,可先筛选出所有发给目标邮箱的邮件,再逐个处理:
# 筛选所有发送至asdf@qwer.com的邮件 user_emails = ActionMailer::Base.deliveries.select do |email| email.to.include?('asdf@qwer.com') end # 逐个打开每一封邮件 user_emails.each do |email| Capybara::Email::Message.new(email).save_and_open end
内容的提问来源于stack exchange,提问作者daveasdf_2
相关产品推荐
相关产品推荐

