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.