我目前正在开发一个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时,加载速度变慢,有时会返回错误超时,这会导致应用程序无法加载。
有没有办法(或宝石)一次处理一堆电子邮件?
因为我认为我现在使用的方式无效。
谢谢。
答案 0 :(得分:0)
所以,根据arnt的回答,我发现在数组中先获取将比我之前的方式更快。我仍然不确定这是否是最好的,所以如果有人找到更好的方法,请告诉我。
这是我的新代码。
<% surat = imap.search(["SINCE", @mail_date]) %>
<% arr_envelop = imap.fetch(surat, "ENVELOPE") %>
<% body_envelop = imap.fetch(surat, "RFC822.TEXT") %>