【问题标题】:After windows update getting this error AttributeError: olEmbeddeditemWindows 更新后出现此错误 AttributeError: olEmbeddeditem
【发布时间】:2017-01-06 07:59:27
【问题描述】:

我有 Python 2.7 的 windows 10 环境,安装了 win32com 包 219。

我能够在下面运行在 excel 中运行宏的代码并生成一个饼图,该饼图将附加(也嵌入到电子邮件正文中)到电子邮件并发送。 该程序运行良好,早些时候,但是在一些 Windows 更新后,同样给出 AttributeError: olEmbeddeditem,我已经导入了 win32com.client 及其常量。

想要在电子邮件正文中嵌入图像,因此用 olByValue 等替换 olEmbeddeditem 将无济于事,我认为,虽然我已经尝试过,但也没有用。

我也重新安装了python的win32com包,但是问题依旧。

早期的工作代码不包含“from win32com.client import constants”,但是由于它不起作用,所以考虑添加这一行,但这也没有帮助。

任何帮助将不胜感激。

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
folders = inbox.Folders

olMailItem = 0x0
obj = win32com.client.Dispatch("Outlook.Application")
xlApp = win32com.client.Dispatch("Excel.Application") 
ExcelWorkBook =     xlApp.Workbooks.Open('C:\Users\xxx\Desktop\data.xlsm') 
xlSheet1 = ExcelWorkBook.Sheets("Sheet1") 
xlApp.Application.Run("data.xlsm!Macro1")
chart1 = xlSheet1.ChartObjects(1) 
chart1.Chart.Export("C:\Users\xxx\Desktop\photo.gif", "GIF", False)
xlApp.Workbooks(1).Close(SaveChanges=0)
xlApp.Application.Quit()
newMail = obj.CreateItem(olMailItem)
newMail.Subject = "Presentation of Automation"
attachment = newMail.Attachments.Add("C:\Users\xxx\Desktop\photo.gif", win32com.client.constants.olEmbeddeditem, 0, "photo")
imageCid = "photo.gif"
attachment.PropertyAccessor.SetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001E", imageCid)
newMail.HTMLBody = "<body>Dear Sir,Madam,<br>Please find the requested details.<br><br><p><img src=\"cid:{0}\"></body>".format(imageCid)
newMail.To = x
attachment1 = "C:\Users\xxx\Desktop\photo.gif"
newMail.Attachments.Add(attachment1)
newMail.Send()
os.remove("C:\Users\xxx\Desktop\photo.gif")
msg.UnRead = False

【问题讨论】:

  • 请显示您得到的详细异常,包括行号(为了清楚起见,您应该在代码中标记)
  • @Schollii,请找出我得到的异常。 ' 回溯(最后一次调用):文件“C:\Users\xxx\Desktop\abc.py”,第 21 行,在 x = msg.Sender.GetExchangeUser().PrimarySmtpAddress AttributeError: 'NoneType' object has没有属性'PrimarySmtpAddress''

标签: python windows python-2.7 win32com


【解决方案1】:

问题的根本原因不是怀疑的 Windows 更新,而是因为收件箱中的群组电子邮件给出了错误。删除该组邮件或移动到与收件箱不同的文件夹后,问题得到解决。仍然不确定它给出错误的原因以及确保此类电子邮件不会最终成为追溯的出路。

【讨论】:

    【解决方案2】:

    此属性错误的主要原因是您的 COM 服务器已从后期绑定(动态)转换为早期绑定(静态)。

    删除 Temp 中的 gen_py 文件夹,这会将 Dispatch 从静态恢复为动态,您的代码应该可以正常工作。

    【讨论】:

      【解决方案3】:

      而不是使用

      attachment = newMail.Attachments.Add("C:\Users\xxx\Desktop\photo.gif", win32com.client.constants.olEmbeddeditem, 0, "photo")
      

      你可以的

      attachment = newMail.Attachments.Add("C:\Users\xxx\Desktop\photo.gif", 0x5, 0, "photo")
      

      【讨论】:

        猜你喜欢
        • 2014-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-29
        • 1970-01-01
        • 1970-01-01
        • 2022-10-05
        相关资源
        最近更新 更多