1.1 --- a/imiptools/__init__.py Mon Jan 26 01:01:34 2015 +0100
1.2 +++ b/imiptools/__init__.py Tue Jan 27 01:29:36 2015 +0100
1.3 @@ -20,8 +20,9 @@
1.4 """
1.5
1.6 from email import message_from_file
1.7 -from imiptools.content import get_addresses, handle_itip_part
1.8 +from imiptools.content import get_addresses, get_uri, handle_itip_part
1.9 from imiptools.mail import Messenger
1.10 +from imiptools.profile import Preferences
1.11 import sys
1.12
1.13 # Postfix exit codes.
1.14 @@ -60,8 +61,8 @@
1.15 """
1.16
1.17 msg = message_from_file(f)
1.18 - senders = get_addresses(msg.get_all("Reply-To") or msg.get_all("From"))
1.19 - original_recipients = original_recipients or get_addresses(get_all_values(msg, "To"))
1.20 + senders = get_addresses(msg.get_all("Reply-To") or msg.get_all("From") or [])
1.21 + original_recipients = original_recipients or get_addresses(get_all_values(msg, "To") or [])
1.22
1.23 # Handle messages with iTIP parts.
1.24
1.25 @@ -81,7 +82,7 @@
1.26 if outgoing_only:
1.27 return
1.28
1.29 - # Pack any returned parts into a single message.
1.30 + # Pack any returned parts into messages.
1.31
1.32 if all_responses:
1.33 outgoing_parts = []
1.34 @@ -96,7 +97,7 @@
1.35 # Reply using any outgoing parts in a new message.
1.36
1.37 if outgoing_parts:
1.38 - message = self.messenger.make_message(outgoing_parts, senders)
1.39 + message = self.messenger.make_outgoing_message(outgoing_parts, senders)
1.40
1.41 if "-d" in sys.argv:
1.42 print >>sys.stderr, "Outgoing parts..."
1.43 @@ -104,16 +105,37 @@
1.44 else:
1.45 self.messenger.sendmail(senders, message.as_string())
1.46
1.47 - # Forward messages to their recipients using the existing message.
1.48 + # Forward messages to their recipients either wrapping the existing
1.49 + # message, accompanying it or replacing it.
1.50
1.51 if forwarded_parts:
1.52 - message = self.messenger.wrap_message(msg, forwarded_parts)
1.53 +
1.54 + # Determine whether to wrap, accompany or replace the message.
1.55 +
1.56 + for recipient in original_recipients:
1.57 + preferences = Preferences(get_uri(recipient))
1.58 +
1.59 + incoming = preferences.get("incoming")
1.60
1.61 - if "-d" in sys.argv:
1.62 - print >>sys.stderr, "Forwarded parts..."
1.63 - print message
1.64 - elif self.lmtp_socket:
1.65 - self.messenger.sendmail(original_recipients, message.as_string(), lmtp_socket=self.lmtp_socket)
1.66 + if incoming == "message-only":
1.67 + messages = [msg]
1.68 + else:
1.69 + summary = self.messenger.make_summary_message(msg, forwarded_parts)
1.70 + if incoming == "summary-then-message":
1.71 + messages = [summary, msg]
1.72 + elif incoming == "message-then-summary":
1.73 + messages = [msg, summary]
1.74 + elif incoming == "summary-only":
1.75 + messages = [summary]
1.76 + else: # incoming == "summary-wraps-message":
1.77 + messages = [self.messenger.wrap_message(msg, forwarded_parts)]
1.78 +
1.79 + for message in messages:
1.80 + if "-d" in sys.argv:
1.81 + print >>sys.stderr, "Forwarded parts..."
1.82 + print message
1.83 + elif self.lmtp_socket:
1.84 + self.messenger.sendmail(recipient, message.as_string(), lmtp_socket=self.lmtp_socket)
1.85
1.86 # Unhandled messages are delivered as they are.
1.87