Я не могу найти какой-либо возможный способ увеличения размера буфера для извлечения почты в Rails, используя либо net / imap, либо почтовый гем из mikel в github.
Проблема: я хочу получать почту каждый раз, когда пользователь входит в системуи это слишком медленно в данный момент.Для получения 40 писем, которые имеют не более 5 МБ, требуется около 20 секунд.Сейчас я использую gmail для тестирования, поэтому это также не должно быть узким местом.Я не хочу иметь локальную копию всех писем, поэтому их хранение тоже не является решением.
Так что на данный момент мне кажется, что это проблема маленьких кусочков по 16 КБ, которая по умолчаниюIMAP и что это должно быть намного быстрее, когда вы можете изменить размер кусков.
У меня есть следующий метод получения писем:
def fetch_headers
imap = Net::IMAP.new('imap.googlemail.com', ssl: true)
begin
imap.authenticate('PLAIN', 'mail@...', 'password')
rescue Net::IMAP::Exception => err
raise Error, err.message
end
assessment_memos = []
begin
imap.select('INBOX')
imap.search('ALL').each do |msg_id|
msg = imap.fetch(msg_id, 'BODY[HEADER.FIELDS (Date From Subject)]')
header_hash = to_hash_helper msg[0].attr['BODY[HEADER.FIELDS (Date From Subject)]']
assessment_memos.push(header_hash)
end
ensure
imap.logout
imap.disconnect
end
assessment_memos
end