Add bounced emails to the conversation thread. Fix Gmail bounce detection by checking the X-Failed-Recipients header. Currently, bounced emails are rejected as auto-replies, which causes support agents to miss important delivery failure context. This PR ensures bounced messages are correctly added to the thread, preserving visibility for the support team.
37 lines
987 B
Ruby
37 lines
987 B
Ruby
module IncomingEmailValidityHelper
|
|
private
|
|
|
|
def incoming_email_from_valid_email?
|
|
return false unless valid_external_email_for_active_account?
|
|
|
|
# Return if email doesn't have a valid sender
|
|
# This can happen in cases like bounce emails for invalid contact email address
|
|
return false unless Devise.email_regexp.match?(@processed_mail.original_sender)
|
|
|
|
# Process bounced emails, as regular emails
|
|
return true if @processed_mail.bounced?
|
|
|
|
# we skip processing auto reply emails like delivery status notifications
|
|
# out of office replies, etc.
|
|
return false if auto_reply_email?
|
|
|
|
true
|
|
end
|
|
|
|
def valid_external_email_for_active_account?
|
|
return false unless @account.active?
|
|
return false if @processed_mail.notification_email_from_chatwoot?
|
|
|
|
true
|
|
end
|
|
|
|
def auto_reply_email?
|
|
if @processed_mail.auto_reply?
|
|
Rails.logger.info "is_auto_reply? : #{processed_mail.auto_reply?}"
|
|
true
|
|
else
|
|
false
|
|
end
|
|
end
|
|
end
|