2021-11-19 06:22:27 +00:00
|
|
|
class Inboxes::FetchImapEmailsJob < ApplicationJob
|
|
|
|
queue_as :low
|
|
|
|
|
|
|
|
def perform(channel)
|
2021-12-15 12:01:16 +00:00
|
|
|
return unless channel.imap_enabled?
|
|
|
|
|
2021-11-19 06:22:27 +00:00
|
|
|
Mail.defaults do
|
|
|
|
retriever_method :imap, address: channel.imap_address,
|
|
|
|
port: channel.imap_port,
|
|
|
|
user_name: channel.imap_email,
|
|
|
|
password: channel.imap_password,
|
|
|
|
enable_ssl: channel.imap_enable_ssl
|
|
|
|
end
|
|
|
|
|
|
|
|
new_mails = false
|
|
|
|
|
|
|
|
Mail.find(what: :last, count: 10, order: :desc).each do |inbound_mail|
|
|
|
|
if inbound_mail.date.utc >= channel.imap_inbox_synced_at
|
|
|
|
Imap::ImapMailbox.new.process(inbound_mail, channel)
|
|
|
|
new_mails = true
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
Channel::Email.update(channel.id, imap_inbox_synced_at: Time.now.utc) if new_mails
|
|
|
|
end
|
|
|
|
end
|