从IMAP Server有效获取电子邮件

时间:2018-02-06 07:15:06

标签: ruby-on-rails ruby email imap

我目前正在开发一个Ruby on Rails应用程序,我可以在其上管理电子邮件。电子邮件来自我自己的托管服务器(例如john@example.com),它不是gmail或yahoo等。

所以,我正在使用这种方法:

<% imap.select("INBOX") %>
<% imap.search(["NOT", "RECENT"]).each do |message_id| %>
<% envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"] %>
<% body = imap.fetch(message_id,'BODY[TEXT]')[0].attr['BODY[TEXT]'] %>
<%= envelope.subject %>
<%= body.html_safe %>
<% end %>

哪个工作正常,但问题是,当电子邮件超过10时,加载速度变慢,有时会返回错误超时,这会导致应用程序无法加载。

有没有办法(或宝石)一次处理一堆电子邮件?

因为我认为我现在使用的方式无效。

谢谢。

1 个答案:

答案 0 :(得分:0)

所以,根据arnt的回答,我发现在数组中先获取将比我之前的方式更快。我仍然不确定这是否是最好的,所以如果有人找到更好的方法,请告诉我。

这是我的新代码。

<% surat = imap.search(["SINCE", @mail_date]) %>
<% arr_envelop = imap.fetch(surat, "ENVELOPE") %>
<% body_envelop = imap.fetch(surat, "RFC822.TEXT") %>