win32api for extensions windows python-2.7 outlook win32com

windows - for - Outlook 2013 muestra el código HTML en lugar de los datos reales



win32com python (1)

Debe establecer la propiedad HTMLBody, pero tenga en cuenta que HTML en Outlook lo representa Word, no IE, y los marcos en línea no son compatibles.

Estoy usando win32com.client , python 2.7.x y outlook 2013 en la plataforma windows .

Necesito publicar el contenido de un archivo HTML en el cuerpo del mensaje de outlook .
Seguí las publicaciones aquí , aquí y aquí sobre cómo guardar Excel como HTML y pegar datos dentro de outlook .

Sin embargo, cuando leo el archivo a través de win32com.client.Dispatch , en lugar de ver el mensaje, veo el código HTML .

Aquí está el código que convierte un archivo xlsx procesado a formato html usando win32.com .

#Section to convert excel workbook to html myfile = os.getcwd()+ "//" + outfile newfile = os.getcwd()+ "//" + "emailData.html" xl = EnsureDispatch(''Excel.Application'') #xl.Visible = True wb3 = xl.Workbooks.Open(myfile) wb3WorkSheet = wb3.Worksheets(1) wb3WorkSheet.Activate() wb3.SaveAs(newfile, constants.xlHtml) wb3.Close(True) xl.Workbooks.Close() xl.Quit() del xl

El resultado de arriba es newfile que básicamente es una exportación del archivo xlsx guardado como html. A continuación, se abre a través de mail.body handler, que debe leer y mostrar los contenidos reales dentro de outlook.

Aquí está el código para eso.

from win32com.client.gencache import EnsureDispatch from win32com.client import constants, Dispatch #Create and open mail message def Emailer(text, subject, recipient): outlook = Dispatch(''outlook.application'') mail = outlook.CreateItem(0) mail.To = recipient mail.Subject = subject mail.HtmlBody = text #mail.HtmlBody = open(newfile).read() mail.body = open(newfile).read() attachment1 = os.getcwd()+"//"+outfile mail.Attachments.Add(attachment1) mail.Display(True) Emailer(pageTemplate, "test subject", "[email protected]" )

Entonces, cuando abro el archivo nuevo (archivo html) usando mail.body = open(newfile).read() , pega html content dentro de un nuevo cuerpo de correo electrónico de Outlook.

Cuando abro el archivo nuevo (archivo html) usando mail.HtmlBody = open(newfile).read() da el siguiente error dentro del cuerpo del correo electrónico de outlook

ERROR: This page uses frames, but your browser doesn''t support them.

Alguna idea sobre este comportamiento?

Básicamente quiero copiar / pegar un archivo html (que es una exportación de xlsx ) dentro del correo electrónico de Outlook. No estoy seguro si lo anterior es el enfoque correcto o si hay otras alternativas.

¿Hay alguna manera de pegar / procesar marcos HTML en el cuerpo del correo electrónico de Outlook?

Cualquier puntero es apreciado.