From d25e7fd54e5375ad0a4db1f1e51cf8e0b9b994b4 Mon Sep 17 00:00:00 2001 From: Tejaswini Chile Date: Wed, 7 Jun 2023 18:24:37 +0530 Subject: [PATCH] fix: add email logging for source-id email-id and message-id (#7262) * fix: mail logger for source-id email-id and message-id * added mail provided to the tracking * change the logger verb from info to error * app/jobs/inboxes/fetch_imap_emails_job.rb * codeclimate fix * remove extra filter * fixes: specs --- app/jobs/inboxes/fetch_imap_emails_job.rb | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/app/jobs/inboxes/fetch_imap_emails_job.rb b/app/jobs/inboxes/fetch_imap_emails_job.rb index 8ffea6c18..5173e478b 100644 --- a/app/jobs/inboxes/fetch_imap_emails_job.rb +++ b/app/jobs/inboxes/fetch_imap_emails_job.rb @@ -40,14 +40,16 @@ class Inboxes::FetchImapEmailsJob < ApplicationJob received_mails(imap_inbox).each do |message_id| inbound_mail = Mail.read_from_string imap_inbox.fetch(message_id, 'RFC822')[0].attr['RFC822'] + mail_info_logger(channel, inbound_mail, message_id) + next if email_already_present?(channel, inbound_mail, last_email_time) process_mail(inbound_mail, channel) end end - def email_already_present?(channel, inbound_mail, last_email_time) - processed_email?(inbound_mail, last_email_time) || channel.inbox.messages.find_by(source_id: inbound_mail.message_id).present? + def email_already_present?(channel, inbound_mail, _last_email_time) + channel.inbox.messages.find_by(source_id: inbound_mail.message_id).present? end def received_mails(imap_inbox) @@ -76,12 +78,21 @@ class Inboxes::FetchImapEmailsJob < ApplicationJob received_mails(imap_inbox).each do |message_id| inbound_mail = Mail.read_from_string imap_inbox.fetch(message_id, 'RFC822')[0].attr['RFC822'] + mail_info_logger(channel, inbound_mail, message_id) + next if channel.inbox.messages.find_by(source_id: inbound_mail.message_id).present? process_mail(inbound_mail, channel) end end + def mail_info_logger(channel, inbound_mail, message_id) + return if Rails.env.test? + + Rails.logger.info(" + #{channel.provider} Email id: #{inbound_mail.from} and message_source_id: #{inbound_mail.message_id}, message_id: #{message_id}") + end + def authenticated_imap_inbox(channel, access_token, auth_method) imap = Net::IMAP.new(channel.imap_address, channel.imap_port, true) imap.authenticate(auth_method, channel.imap_login, access_token) @@ -113,6 +124,8 @@ class Inboxes::FetchImapEmailsJob < ApplicationJob Imap::ImapMailbox.new.process(inbound_mail, channel) rescue StandardError => e ChatwootExceptionTracker.new(e, account: channel.account).capture_exception + Rails.logger.error(" + #{channel.provider} Email dropped: #{inbound_mail.from} and message_source_id: #{inbound_mail.message_id}, message_id: #{message_id}") end # Making sure the access token is valid for microsoft provider