Sto utilizzando win32com.client
, python 2.7.x
e outlook 2013
sulla piattaforma windows
.Outlook 2013 visualizza il codice HTML invece dei dati effettivi
Ho bisogno di pubblicare il contenuto di un file HTML
nel corpo del messaggio outlook
.
Ho seguito i post here, here e here su come salvare Excel come HTML
e incollare i dati all'interno di outlook
.
Tuttavia, quando ho letto il file tramite win32com.client.Dispatch
, invece di vedere il messaggio, sto vedendo il codice HTML
.
Ecco il codice che converte un file elaborato xlsx
in formato html
utilizzando 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
L'uscita di cui sopra è newfile
che è fondamentalmente un export di file di xlsx salvato in formato HTML. Viene quindi aperto tramite il gestore mail.body
che dovrebbe leggere e visualizzare i contenuti effettivi in Outlook.
Ecco il codice per questo.
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]"
)
Così, quando ho aperto newfile
(file html) utilizzando mail.body = open(newfile).read()
si paste html content
all'interno di un nuovo corpo di Outlook e-mail.
Quando apro newfile
(file html) utilizzando mail.HtmlBody = open(newfile).read()
è dare seguente errore all'interno del corpo outlook
email
ERROR: This page uses frames, but your browser doesn't support them.
Tutte le idee su questo comportamento?
In pratica voglio copiare/incollare il file html
(che è un'esportazione di xlsx
) nell'e-mail di Outlook. Non sono sicuro se sopra è l'approccio corretto o ci sono altre alternative.
C'è un modo per incollare/rendere i frame HTML nel corpo dell'e-mail di Outlook?
Qualsiasi indicazione è apprezzata.
Quando imposto 'HTMLBody', ottengo l'errore' frame' perché i dati HTML hanno dei frame. Non posso evitarlo. C'è un modo per incollare/rendere il frame nel corpo dell'e-mail di Outlook? –
No, come ho detto prima, l'HTML è gestito da Word, non da IE. Visualizzerà l'HTML all'esterno dei frame, ma i frame non verranno caricati. Ricorda, Word non va in rete per scaricare i frame. Il tuo HTML deve essere autonomo. –
Ho capito, ma come mai una semplice copia e incolla dello stesso contenuto HTML con frame da Excel a Outlook funziona? C'è un modo per ottenerlo attraverso un codice? –