2010-08-26 9 views
7

Ho una lista (errors) che entrambi stampo sullo schermo e invii il corpo di un'email. Ma prima separare gli elementi della lista con un carattere di nuova linea:Newline visualizzata sullo schermo ma non nell'e-mail

"\n".join(errors) 

Ho poi stamparlo su console e inviarlo come e-mail. Sulla console appare delimitato da nuove righe:

Error generating report 
Another error 

Nella mail, però, non riescono a mostrare ...

Error generating report Another error 

Cosa sta succedendo?

Edit:

A complicare ulteriormente le cose, ho appena notato che messaggi di posta elettronica vengono inviati, uno dei quali mostra il ritorno a capo e uno dei quali non fa!

sendEmail(SUPPORT_EMAIL_ADDRESS, "application terminated unexpectedly.", \ 
        "The script will exit.\n\nError Message:\n%s" % \ 
        "\n".join(errors)) 
sendEmail(USERS_EMAIL_ADDRESS, "report is delayed.", 
        "\n".join(errors), 
        "html", [], [], SUPPORT_EMAIL_ADDRESS) 

Il primo li ha mentre il secondo no. Questo a causa della formattazione html nel secondo ...?

+4

la tua e-mail è formattata in html? Questo può influenzare la presentazione delle newline ... –

+0

@Eric Snow - Stavo aggiornando come hai commentato ... sembra che tu abbia risolto il mio problema :) Se lo pubblichi come risposta, lo ascolterò e lo accetterò. – froadie

risposta

11

Se la tua email viene formattato HTML allora che colpirebbe presentazione delle nuove righe.

10

Due cose che vorrei provare:

  • prova con CRLF ("\r\n") invece di appena LF

  • assicurarsi che il vostro e-mail non viene inviato in modalità HTML, o, in caso affermativo, provare sostituendo il "\n" con "<br>"

+0

Grazie per il tuo aiuto! Era in modalità HTML e il tag di interruzione di linea ha fatto il trucco – froadie

5

Stai leggendo l'e-mail in Outlook? Outlook cancellerà le "interruzioni di riga aggiuntive" (ovvero quelle interruzioni di riga che non ritiene necessarie da alcune regole arcane) dalla semplice posta elettronica. Per ovviare a questo, converto la posta come i log in HTML prima di inviarla. Questo è molto semplice; basta avvolgerlo nei tag < PRE> ... </PRE> (con le intestazioni HTML appropriate ovviamente).

+0

Outlook di solito dirà anche all'utente che ha spogliato le interruzioni di riga in più nell'area di notifica nella parte superiore del messaggio, e se si fa clic ci dovrebbe essere un'opzione per ripristinare esso. Penso che ci sia anche un'opzione nascosta nelle opzioni di posta elettronica Arcane Mystic Super-Advanced che ti consente di attivare questa funzione. – FrustratedWithFormsDesigner

0

Per questo tipo di problema, trovo che l'esame del codice nativo nell'e-mail sia di grande aiuto. Uso Eudora per questo poiché memorizza tutta la posta elettronica in formato testo nativo. Sono in grado di esaminare la formattazione senza averlo sfogliato dal client eMail aprendo la casella di posta elettronica nel Blocco note o in un altro editor di testo. Se ti trovi in ​​un ambiente UNIX, potrebbe essere meglio guardarlo in vi o in un altro editor di testo di base.
Tutte le eMail sono di puro testo e vengono convertite in ciò che vedete dal client e-mail.

Problemi correlati