2017-01-06 5 views
0

J'ai l'environnement Windows 10 avec Python 2.7, le paquet win32com 219 est installé.Après la mise à jour de Windows obtenir cette erreur AttributeError: olEmbeddeditem

J'ai été capable de courir en dessous du code qui exécute une macro dans Excel et générer un camembert qui sera attaché (aussi être incorporé dans le corps de l'email) pour envoyer et envoyer. Ce programme fonctionnait bien, plus tôt, cependant après quelques mises à jour de Windows, la même chose donne AttributeError: olEmbeddeditem, j'ai importé win32com.client et sa constante.

Voulez-vous l'image intégrée dans le corps de l'e-mail, donc le remplacement olEmbeddeditem avec olByValue, etc ne va pas aider, je pense, bien que j'ai essayé, ce qui n'a pas fonctionné.

J'ai également fait la réinstallation du paquet win32com de python, cependant le problème persiste.

Le code de travail précédent n'incluait pas "des constantes d'importation win32com.client", mais comme il ne fonctionnait pas, il a pensé à ajouter cette ligne, mais cela n'a pas aidé non plus.

Toute aide serait appréciée.

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

S'il vous plaît montrer l'exception détaillée que vous obtenez, y compris le numéro de ligne (que vous devez marquer dans votre code juste pour être clair) – Schollii

+0

@Schollii, s'il vous plaît trouver l'exception que je recevais. ' retraçage (appel le plus récent en dernier): fichier "C: \ Users \ xxx \ Desktop \ abc.py", ligne 21, en x = msg.Sender.GetExchangeUser() PrimarySmtpAddress AttributeError:.' NoneType 'objet n'a aucun attribut' PrimarySmtpAddress ' ' – MSY

Répondre

0

La cause racine du problème n'a pas été une mise à jour de Windows comme suspect, mais il était à cause d'un e-mail de groupe dans la boîte de réception qui donnait l'erreur. Après avoir supprimé ce courrier de groupe ou déplacé vers un autre dossier que Boîte de réception, le problème a été résolu. Toujours pas sûr de la raison pour laquelle il donnait l'erreur et quel est le moyen de sortir à l'avenir pour s'assurer que ces e-mails ne finissent pas dans un retraçage.