Email
用於解析電子郵件以刪除特定名稱附件的腳本或工具
我已經配置了 Redmine 電子郵件集成,雖然它很棒,但一個主要的煩惱是人們擁有包含公司徽標的簽名,然後將其發佈到他們通過電子郵件更新的每張票上。我知道這不是一個完美的解決方案,但我想通過管道傳輸到一個腳本,該腳本從消息中刪除名為“image001.png”的附件,這樣我就可以將它傳遞給處理程序。是否有可用的工具來幫助解決這個問題,還是我必須從頭開始?
前:
alias > mailhandler.rb
後:
alias > parser.script > mailhandler.rb
我個人會選擇 Andrzej A. Filip 建議的 MIMEDefang 選項,但我想知道如何在 python 腳本中編寫它並提出以下解決方案。如果 MIMEDefang 不適合您的環境,您可能想嘗試一下。沒有保證,僅使用一些範例消息進行了測試
#!/usr/bin/python import email import sys def remove_attachment(rootmsg,attachment_name): """return message source without the first occurence of the attachment named <attachment_name> or None if the attachment was not found""" for msgrep in rootmsg.walk(): if msgrep.is_multipart(): payload=msgrep.get_payload() indexcounter=0 for attachment in payload: att_name = attachment.get_filename(None) if att_name==attachment_name: del payload[indexcounter] return rootmsg.as_string() indexcounter+=1 if __name__=='__main__': incontent=sys.stdin.read() try: rootmsg=email.message_from_string(incontent) except: sys.stderr.write("Message could not be parsed") sys.exit(1) src=remove_attachment(rootmsg,'image001.png') if src!=None: sys.stdout.write(src) else: sys.stdout.write(incontent)