我有一个运行python 2.7的Windows 10环境,下面提到的是我正在处理的代码,预计会发送扫描Outlook应用程序以获取来自&x; xyz@domain.com'的邮件。主题'向我发送数据文件'如果找到相同的内容,它将发送一封包含所需xlsx文件的邮件。但是,当我执行此程序时,它会给出错误,如下所示:
Traceback (most recent call last):
File "C:\Users\xxx\Desktop\mail-test.py", line 13, in <module>
x = msg.Sender.GetExchangeUser().PrimarySmtpAddress
AttributeError: 'NoneType' object has no attribute 'PrimarySmtpAddress'
下面提到的是代码:
import sys
import os
import win32com.client
import codecs
from win32com.client import constants
sys.stdout = codecs.getwriter("iso-8859-1")(sys.stdout, 'xmlcharrefreplace')
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6)
all_inbox = inbox.Items
for msg in all_inbox:
if msg.Class == 43:
if msg.SenderEmailType == 'EX':
x = msg.Sender.GetExchangeUser().PrimarySmtpAddress
if x == 'xyz@domain.com':
message = msg.Subject
a = message.encode('ascii', 'ignore').decode('ascii')
if (message == 'send me a data doc') and (msg.UnRead == True):
olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
newMail = obj.CreateItem(olMailItem)
newMail.Subject = "data doc"
newMail.HTMLBody = "<body>Dear Sir,Madam,<br>Please find the requested details.<br><br><p></body>"
newMail.To = x
attachment1 = "C:\Users\xxx\Desktop\data.xlsx"
newMail.Attachments.Add(attachment1)
newMail.Send()
msg.UnRead = False
请协助消除此错误。任何帮助将不胜感激。
答案 0 :(得分:1)
我最终找到了问题的原因,错误是因为收件箱中的一封电子邮件是群组电子邮件地址,导致此类错误,最后只需移动/删除该电子邮件,错误就消失了,程序就是按预期运作。如果有人可以分享如何处理这样的群组电子邮件地址,我们会欢迎。为什么这样的群组电子邮件地址会导致上面给出的错误。 感谢所有花时间在这里帮助我的人。