' NoneType'对象没有属性' PrimarySmtpAddress'

时间:2017-01-09 11:21:49

标签: python windows python-2.7

我有一个运行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

请协助消除此错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我最终找到了问题的原因,错误是因为收件箱中的一封电子邮件是群组电子邮件地址,导致此类错误,最后只需移动/删除该电子邮件,错误就消失了,程序就是按预期运作。如果有人可以分享如何处理这样的群组电子邮件地址,我们会欢迎。为什么这样的群组电子邮件地址会导致上面给出的错误。 感谢所有花时间在这里帮助我的人。