现在,我的代码执行以下操作
但是,不是保存附件,是否可以只获取附件的哈希值,并跳过保存?
attachments = message.Attachments
for attachment in attachments:
if attachment.FileName.endswith(".msg"):
attachment.SaveASFile(
os.path.dirname(os.path.abspath(__file__)) + '/attachments/' + str(
time.time()) + "-" + message.subject + "-" + attachment.FileName)
编辑:
这是我尝试过的:
def get_attachments(message):
attachments = message.Attachments
for attachment in attachments:
data_array = message.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x37010102")
print len(data_array)
这是我得到的错误:
pywintypes.com_error: (-2147352567, 'Exception occurred.', (4096, u'Microsoft Outlook', u'The property "http://schemas.microsoft.com/mapi/proptag/0x37010102" is unknown or cannot be found.', None, 0, -2147221233), None)
Process finished with exit code 1
答案 0 :(得分:0)
是的,有可能。您需要使用Attachment类的PropertyAccessor属性来获取相应类的实例。它返回一个PropertyAccessor对象,该对象支持创建,获取,设置和删除父Attachment对象的属性。因此,您可以使用PropertyAccessor类的GetProperty方法获取PR_ATTACH_DATA_BIN属性的值(DASL名称为http://schemas.microsoft.com/mapi/proptag/0x37010102
),该属性返回表示附加文件的字节数组。
答案 1 :(得分:0)
PR_ATTACH_DATA_BIN仅适用于常规按值附件。嵌入式邮件或OLE附件没有该属性。确保Attachment.Type属性== 1(OlAttachmentType.olByValue)。
如果是嵌入式邮件附件,您可以将其保存为临时MSG文件并计算其哈希值,但请注意,MSG文件将包含日期/时间戳,这将导致每次都有新的哈希值MSG文件已保存。