bemade-addons/msg_viewer/test/analyze_msg.py
2025-05-29 21:35:47 -04:00

68 lines
2.1 KiB
Python

import extract_msg
import os
import base64
def analyze_msg(file_path):
print(f"Analyzing MSG file: {file_path}")
msg = extract_msg.Message(file_path)
print("\n=== Basic Information ===")
print(f"Subject: {msg.subject}")
print(f"From: {msg.sender}")
print(f"To: {msg.to}")
print("\n=== Body Properties ===")
print("Has RTF:", hasattr(msg, '_rtf'))
print("\nPlain Body Type:", type(msg.body))
print("Plain Body Preview:")
print("---START OF PLAIN BODY---")
print(msg.body[:500])
print("---END OF PLAIN BODY---")
print("\nHTML Body Preview:")
print("---START OF HTML BODY---")
if msg.htmlBody:
try:
html_content = msg.htmlBody.decode('utf-8', errors='ignore')
print(html_content[:1000])
except Exception as e:
print(f"Error decoding HTML body: {e}")
else:
print("No HTML body found")
print("---END OF HTML BODY---")
print("\nRTF Body Preview:")
print("---START OF RTF BODY---")
if msg.rtfBody:
try:
rtf_content = msg.rtfBody.decode('utf-8', errors='ignore')
print(rtf_content[:1000])
except Exception as e:
print(f"Error decoding RTF body: {e}")
else:
print("No RTF body found")
print("---END OF RTF BODY---")
print("\n=== Images ===")
for att in msg.attachments:
if att.longFilename and 'image' in att.longFilename.lower():
print(f"Found image: {att.longFilename}")
print(f"Content-ID: {att.cid if hasattr(att, 'cid') else 'No CID'}")
print("\n=== Available Attributes ===")
for attr in dir(msg):
if not attr.startswith('_'):
try:
value = getattr(msg, attr)
if not callable(value):
print(f"{attr}: {type(value)}")
except Exception as e:
print(f"{attr}: Error accessing - {str(e)}")
if __name__ == "__main__":
file_path = "FACTURE NO. 7005451.msg"
if os.path.exists(file_path):
analyze_msg(file_path)
else:
print(f"File not found: {file_path}")