From 1d924353c43b751e282038780084b0deefbb7cc3 Mon Sep 17 00:00:00 2001 From: William Morgan Date: Thu, 26 Mar 2009 12:39:46 -0700 Subject: [PATCH] bugfix: reply from addresses drop the names In the new world of no Person canonicalization, we instead need to go through Account (which does map the name) when we use #recipient_email. Various comment improvements as well. --- lib/sup/modes/reply-mode.rb | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/lib/sup/modes/reply-mode.rb b/lib/sup/modes/reply-mode.rb index c1c542b..46bc04a 100644 --- a/lib/sup/modes/reply-mode.rb +++ b/lib/sup/modes/reply-mode.rb @@ -53,22 +53,29 @@ EOS hook_reply_from = HookManager.run "reply-from", :message => @m ## sanity check that selection is a Person (or we'll fail below) - ## don't check that it's an Account, though; assume they know what they're doing. + ## don't check that it's an Account, though; assume they know what they're + ## doing. if hook_reply_from && !(hook_reply_from.is_a? Person) - Redwood::log "reply-from returned non-Person, using default from." - hook_reply_from = nil + Redwood::log "reply-from returned non-Person, using default from." + hook_reply_from = nil end - from = - if hook_reply_from - hook_reply_from - elsif @m.recipient_email && AccountManager.is_account_email?(@m.recipient_email) - Person.from_address(@m.recipient_email) - elsif(b = (@m.to + @m.cc).find { |p| AccountManager.is_account? p }) - b - else - AccountManager.default_account - end + ## determine the from address of a reply. + ## if we have a value from a hook, use it. + from = if hook_reply_from + hook_reply_from + ## otherwise, if the original email was addressed to a particular + ## address via an envelope-to or whatever, try and use that one. + elsif @m.recipient_email && (a = AccountManager.account_for(@m.recipient_email)) + a + ## otherwise, try and find an account somewhere in the list of to's + ## and cc's. + elsif(b = (@m.to + @m.cc).find { |p| AccountManager.is_account? p }) + b + ## if all else fails, use the default + else + AccountManager.default_account + end ## now, determine to: and cc: addressess. we ignore reply-to for list ## messages because it's typically set to the list address, which we -- 2.45.2