# list of regular expressions which we will view as being indicative
# of an attachment
attachment_regexes = [ r'\battach(ed|ment|ing)?\b(?im)',
- r'\balleg(o|at[oaie]|ando)' ]
+ r'\balleg(o|at[oaie]|ando)(?im)' ]
+# ignore quoted text (which might refer to attachments in previous emails)
+attachment_regexes = [ r'(^|^[^\n>].*)' + x for x in attachment_regexes ]
### No Edit Below This Line
###########################################
def send_message():
global sendmail
- sendmail = sendmail + " " + " ".join( sys.argv[1:] )
-
- mailpipe = os.popen("%s" % sendmail, 'w')
+
+ # construct the sendmail pipe more safely (thanks iain murray!)
+ cmd = sys.argv[:]
+ cmd[0] = sendmail
+
+ from subprocess import Popen, PIPE
+ process = Popen(cmd, stdin=PIPE)
+ mailpipe = process.stdin
mailpipe.write( message_string )
- sys.exit( mailpipe.close() )
+ mailpipe.close()
+ sys.exit( process.wait() )
## SUB: print error message
def print_error():
# check for the confirmation
if re.search( r'Subject: CONFIRM', message_string ):
- message_string = re.sub( r'(Subject: )(CONFIRM)(.*?)\n',
+ message_string = re.sub( r'(Subject: )(CONFIRM )(.*?)\n',
r'\1\3\n', message_string )
send_message()