FIX: wasn't able to parse FROM email in the embedded email

This commit is contained in:
Régis Hanol
2016-12-01 18:34:47 +01:00
parent 8a0cf1b90e
commit 62763f025c
4 changed files with 77 additions and 4 deletions

View File

@ -244,14 +244,21 @@ module Email
address_field.decoded
from_address = address_field.address
from_display_name = address_field.display_name.try(:to_s)
return [from_address.downcase, from_display_name] if from_address["@"]
return [from_address&.downcase, from_display_name&.strip] if from_address["@"]
end
end
from_address = mail.from[/<([^>]+)>/, 1]
from_display_name = mail.from[/^([^<]+)/, 1]
if mail.from[/<[^>]+>/]
from_address = mail.from[/<([^>]+)>/, 1]
from_display_name = mail.from[/^([^<]+)/, 1]
end
[from_address.downcase, from_display_name]
if (from_address.blank? || !from_address["@"]) && mail.from[/\[mailto:[^\]]+\]/]
from_address = mail.from[/\[mailto:([^\]]+)\]/, 1]
from_display_name = mail.from[/^([^\[]+)/, 1]
end
[from_address&.downcase, from_display_name&.strip]
end
def subject
@ -376,6 +383,9 @@ module Email
def process_forwarded_email(destination, user)
embedded = Mail.new(@embedded_email_raw)
email, display_name = parse_from_field(embedded)
return false if email.blank? || !email["@"]
embedded_user = find_or_create_user(email, display_name)
raw = try_to_encode(embedded.decoded, "UTF-8").presence || embedded.to_s
title = embedded.subject.presence || subject
@ -387,6 +397,7 @@ module Email
raw: raw,
title: title,
archetype: Archetype.private_message,
target_usernames: [user.username],
target_group_names: [group.name],
is_group_message: true,
skip_validations: true,