From 30cc01f89daea932d15a1a505d25b543913664ac Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Wed, 28 Nov 2012 20:21:09 +0100 Subject: Use Delivered-To header as a last resort for identity selection (#1488840) --- program/steps/mail/compose.inc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'program/steps/mail/compose.inc') diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 92ec88f1b..60662b382 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -298,7 +298,6 @@ else if (count($MESSAGE->identities)) { $from_idx = null; $found_idx = null; $default_identity = 0; // default identity is always first on the list - $return_path = $MESSAGE->headers->others['return-path']; // Select identity foreach ($MESSAGE->identities as $idx => $ident) { @@ -332,8 +331,8 @@ else if (count($MESSAGE->identities)) { $from_idx = $found_idx; } - // Fallback using Return-Path - if ($from_idx === null && $return_path) { + // Try Return-Path + if ($from_idx === null && ($return_path = $MESSAGE->headers->others['return-path'])) { foreach ($MESSAGE->identities as $idx => $ident) { if (strpos($return_path, str_replace('@', '=', $ident['email_ascii']).'@') !== false) { $from_idx = $idx; @@ -342,6 +341,16 @@ else if (count($MESSAGE->identities)) { } } + // Fallback using Delivered-To + if ($from_idx === null && ($delivered_to = $MESSAGE->headers->others['delivered-to'])) { + foreach ($MESSAGE->identities as $idx => $ident) { + if (in_array($ident['email_ascii'], $delivered_to)) { + $from_idx = $idx; + break; + } + } + } + $ident = $MESSAGE->identities[$from_idx !== null ? $from_idx : $default_identity]; $from_id = $ident['identity_id']; -- cgit v1.2.3