2017-01-06 1 views
0

У меня есть среда Windows 10 с Python 2.7, установлен пакет win32com 219.После обновления Windows получение этой ошибки AttributeError: olEmbeddeditem

Я смог запустить под кодом, который запускает макрос в excel и создает круговую диаграмму, которая будет прикреплена (также встроена в тело электронной почты) для отправки по электронной почте и отправки. Эта программа работала нормально, раньше, однако после некоторого обновления Windows то же самое дает AttributeError: olEmbeddeditem, я импортировал win32com.client и его константу.

Хотите встроенное изображение в тело электронной почты, поэтому замена olEmbeddeditem на olByValue и т. Д. Не поможет, я думаю, хотя я и попытался, что тоже не сработало.

Я также сделал переустановку пакета win32com python, однако проблема сохраняется.

Ранее рабочий код не включал «из констант импорта win32com.client», однако, поскольку он не работал, подумал о добавлении этой строки, но это тоже не помогло.

Любая помощь будет оценена по достоинству.

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 
+0

, пожалуйста, покажите подробное исключение, которое вы получите, в том числе номер строки (который вы должны отметить в своем коде, чтобы быть чистым) – Schollii

+0

@Schollii, пожалуйста, найдите исключение, которое я получал. ' Traceback (самый последний вызов последнего): Файл "C: \ Users \ ххх \ Desktop \ abc.py", строка 21, в х = msg.Sender.GetExchangeUser() PrimarySmtpAddress AttributeError:. NoneType 'объект не имеет атрибута' PrimarySmtpAddress ' ' – MSY

ответ

0

Основной причиной этого вопроса не было обновление Windows, как и предполагалось, однако это было из-за группы электронной почты в папке Входящие, который дает ошибку. После удаления этой групповой почты или перехода в другую папку, кроме папки «Входящие», проблема была решена. Все еще не уверен в причине, почему он выдавал ошибку и каков путь вперед, чтобы гарантировать, что такие письма не попадут в трассировку.

Смежные вопросы