diff --git a/mailing.py b/mailing.py index 1255084..fec2735 100755 --- a/mailing.py +++ b/mailing.py @@ -57,12 +57,7 @@ def parse_args(): "-v", "--verbose", action="store_true", ) parser.add_argument( - "-a", - "--attachement", - metavar="ATTACHED.FILE", - type=str, - nargs="?", - help="Optionnal attachment.", + "-a", "--attachement", type=str, nargs="+", help="Optionnal attachments.", ) return parser.parse_args() @@ -83,21 +78,24 @@ def read_body(args): def read_join(args): - try: - with open(args.attachement, "rb") as fp: - ctype, encoding = mimetypes.guess_type(args.attachement) - if ctype is None or encoding is not None: - ctype = "application/octet-stream" - maintype, subtype = ctype.split("/", 1) - metadata = { - "filename": args.attachement, - "maintype": maintype, - "subtype": subtype, - } - return (fp.read(), metadata) - except Exception as e: - print("read error: %s" % e) - exit(1) + r = [] + for attachement in args.attachement: + try: + with open(attachement, "rb") as fp: + ctype, encoding = mimetypes.guess_type(attachement) + if ctype is None or encoding is not None: + ctype = "application/octet-stream" + maintype, subtype = ctype.split("/", 1) + metadata = { + "filename": attachement, + "maintype": maintype, + "subtype": subtype, + } + r.append((fp.read(), metadata)) + except Exception as e: + print("read error: %s" % e) + exit(1) + return r def replace_values(bodytemplate, values): @@ -130,7 +128,7 @@ def qencode_subject(message): return message.replace(subjectstr, qsubjectstr, 1) -def send_message(message, to, attachment, args): +def send_message(message, to, attachments, args): lines = message.split("\n") @@ -180,8 +178,9 @@ def send_message(message, to, attachment, args): if ccvalue: msg["Cc"] = ccvalue msg.set_content(body) - if attachment: - msg.add_attachment(attachment[0], **attachment[1]) + if attachments: + for attachment in attachments: + msg.add_attachment(attachment[0], **attachment[1]) if args.verbose: print(msg) @@ -213,7 +212,7 @@ if __name__ == "__main__": # optionnaly read the attachment of the mail attachment = None if args.attachement: - attachment = read_join(args) + attachments = read_join(args) # counter to be able to pause each 10 mails send counter = 0 @@ -230,7 +229,7 @@ if __name__ == "__main__": body = replace_values(bodytemplate, values) # send message - send_message(body, recipient, attachment, args) + send_message(body, recipient, attachments, args) # pause every 10 mails for 5 secs so that the MTA doesn't explode counter = counter + 1