# HG changeset patch # User Paul Boddie # Date 1506871061 -7200 # Node ID 160adfbfea4af37e55d8f0bfa8cc8b2599f3fc48 # Parent 2bd0846a380dc2c973f386b6280b38cc5fc5551c Fixed the type of any identified outgoing recipient (URI not address). Made the recipient identification code somewhat clearer. diff -r 2bd0846a380d -r 160adfbfea4a imiptools/__init__.py --- a/imiptools/__init__.py Sun Oct 01 16:38:10 2017 +0200 +++ b/imiptools/__init__.py Sun Oct 01 17:17:41 2017 +0200 @@ -80,7 +80,6 @@ """ msg = message_from_file(f) - senders = get_addresses(get_all_values(msg, "Reply-To") or get_all_values(msg, "From") or []) messenger = self.messenger store = self.get_store() @@ -93,10 +92,12 @@ # messages. if not self.outgoing_only: + senders = get_addresses(get_all_values(msg, "Reply-To") or get_all_values(msg, "From") or []) original_recipients = original_recipients or get_addresses(get_all_values(msg, "To") or []) + users = [] + for recipient in original_recipients: - Recipient(get_uri(recipient), messenger, store, publisher, journal, preferences_dir, self.handlers, self.outgoing_only, self.debug - ).process(msg, senders) + users.append(get_uri(recipient)) # However, outgoing messages do not usually presume anything about the # eventual recipients and focus on the sender instead. If possible, the @@ -106,9 +107,20 @@ # None and deduced from the object content later. else: - senders = [sender for sender in get_addresses(get_all_values(msg, "From") or []) if sender != settings["MESSAGE_SENDER"]] - Recipient(senders and senders[0] or None, messenger, store, publisher, journal, preferences_dir, self.handlers, self.outgoing_only, self.debug - ).process(msg, senders) + senders = [] + + for sender in get_addresses(get_all_values(msg, "From") or []): + if sender != settings["MESSAGE_SENDER"]: + senders.append(sender) + + users = [senders and get_uri(senders[0]) or None] + + # Process the message for each recipient. + + for user in users: + Recipient(user, messenger, store, publisher, journal, + preferences_dir, self.handlers, self.outgoing_only, + self.debug).process(msg, senders) def process_args(self, args, stream):