2016-05-13 3 views
1

ich folgende Funktion Mails in meinem django app zu holen:E-Mails von imaplib geholt haben keine Zeilenumbrüche

def landing_page(request): 
    mail.select('inbox') 
    result, data = mail.uid('search', None, "ALL") 
    i = len(data[0].split()) 
    for x in range(i, i-10, -1): 
     status, data = mail.fetch(x, '(RFC822)') 
     email_msg = email.message_from_string(data[0][1]) 
     if email_msg.is_multipart(): 
      for part in email_msg.walk(): 
       if part.get_content_type() == "text/plain": 
        body = part.get_payload(decode=True).decode("quoted-printable") 

     else: 
      body = email_msg.get_payload(decode=True).decode("quoted-printable") 

     if body is None : 
      body = "None" 

     rec = MailTable(mid = x, subject = email_msg['subject'], sender = email_msg['from'], mail=body.decode('utf-8', 'ignore')) 
     rec.save() 
    return render(request, "landing_page.html", {}) 

Was ich als Ergebnis zu erhalten, ist dies:

Hi Mayur,I scored 93 percentile in GRE and 95 percentile in high school. I applied for MBA for Harvard University and got selected!. Looking forward for a great career.!Your Sincerely,Cristo 

Was ich will, ist dies:

Hi Mayur, 
    I scored 93 percentile in GRE and 95 percentile in high school. 
I applied for MBA for Harvard University and got selected!. Looking forward for a great career.! 
Your Sincerely, 
Cristo 

EDIT:

ich vorbei, den Körper als Kontext und dann in HTML-Anzeigen wie:

<div class="bottom-box" id = "body-mail"> 
    {{ body_ }} 
</div> 
+0

Ist Ihre Ausgabe HTML oder eine Zeichenfolge? In html werden alle Leerzeichen als ein einzelnes Leerzeichen angezeigt. –

+0

Es ist eine Zeichenfolge. Ich versuchte mit jQuery $ (Dokument) .ready für die Einstellung der .html der ID aber es scheitert, da es kein '\' am Ende gibt –

Antwort

2

Ich vermute, dass das Problem nicht Zeilenumbrüche, aber Pausen. Versuchen Sie:

body = body.replace('\n', '<br />\n') 
+0

jetzt das Ergebnis ist Hallo Mayur,
Ich erzielte 93 Prozent in GRE und 95 Perzentil auf der Hochschule. Ich habe
für MBA für die Universität von Harvard beantragt und wurde ausgewählt !. Ich freue mich auf eine
großartige Karriere.!
Mit freundlichen Grüßen,
Cristo
' –

+0

Ich habe die Frage für weitere Informationen aktualisiert –

+0

@cwallenpoole dies wird nicht funktionieren, weil Django die Tags vor dem Rendern entkommen wird. – solarissmoke

2

Neue Zeilen werden nur zu einem einzelnen Leerzeichen in HTML verkettet. Sie können die linebreaks Schablonenfilter verwenden sie in den Absätzen zu konvertieren:

<div class="bottom-box" id = "body-mail"> 
    {{ body_|linebreaks }} 
</div> 

Es gibt auch linebreaksbr ist die <br>-Tags statt <p> Tags hinzufügt.

Verwandte Themen