2016-12-15 1 views
-1

Ich versuche, eine HTML-basierte E-Mail mit Python zu erstellen. Also in meinem E-Mail-Inhalt möchte ich eine HTML-Tabelle erstellen, um die Liste der Inhalte von mongodb Sammlung enthält Daten über verschiedene Kunden innerhalb der letzten 24 Stunden angezeigt.Wie Daten von Mongo-Datenbank an HTML-E-Mail in Python übergeben werden, um eine tabellenbasierte Zusammenfassung anzuzeigen

Wie füge ich JSON-Antwort von Mungo in HTML-E-Mail mit Python. Die JSON-Antwort, die ich hier verwende, sind Daten.

data = { 
    u'FirstName': u'ABC', 
    u'LastName': u'XYZ', 
    u'Company': u'KBS', 
    u'added_time': datetime.datetime(2016, 12, 12, 12, 12, 20, 207000), 
    u'ID': 123 
} 

Im Folgenden finden Sie, was bisher haben: -

import sys 
import json 
import smtplib 
from pymongo import MongoClient 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 

sender = '[email protected]' 
receivers = '[email protected]' 

# Create message container - the correct MIME type is multipart/alternative. 
msg = MIMEMultipart('alternative') 
msg['Subject'] = "TEST" 
msg['From'] = sender 
msg['To'] = receivers 

client = MongoClient('mongodb://localhost:27017/') 
db = client.abc 

data = [] 
### Get all the customer added within last 24 hrs 
for cust in db.customer.find{"added_time": {"$gt" : dt, "$lt" : datetime.now() }}): 
    data.append(cust) 

print data 
# Create the body of the message (a plain-text and an HTML version). 
text = "Hi! this is auta geneated mail" 
html = """\ 
<html> 
    <head></head> 
    <body> 
    <table> 
    </table> 
    </body> 
</html> 
""" 

part1 = MIMEText(text, 'plain') 
part2 = MIMEText(html, 'html') 

msg.attach(part1) 
msg.attach(part2) 
+0

Wo genau haben Sie Probleme? Sie haben die Daten, was ist das Problem, das Sie beim Einfügen in das HTML haben? –

+0

@DanielRoseman Ja, habe die Daten aber nicht in der Lage, die Daten in eine Tabelle einzufügen und die Daten in Tabellenform in E-Mails zu bekommen. – Rachel

+0

Aber warum nicht? Was hast du versucht? Es ist nur eine Zeichenfolge. –

Antwort

0

Sie sollten eine geordnete dict verwenden, so dass die json Objekte

from pymongo import MongoClient 
from collections import OrderedDict 

client = MongoClient('mongodb://localhost:27017/', document_class=OrderedDict) 

nicht bewegen und stattdessen Ihre eigenen schreiben Tabellen-Parser, verwenden Sie ein bereits gemachtes Modul wie json2html (die Macht von Python;))


Die Bibliothek werden alle Felder in der dict in eine Tabelle konvertieren, so dass Sie eine neue dict von nur erforderlichen Felder

json_data = {...} 
required = ['a','b','c'] 
relevant = {k.upper():json_data[k] for k in required} 

und für mehrere Zeilen machen müssen, müssen Sie eine Liste von dicts

table_json = [{...}, {...}, ...] 
+0

Sieht gut aus. html = "" "\ json2html.convert (json = DATAT) """ So bin ich in meinem Code hinzufügen suppsoed – Rachel

+0

bereits. "" "\ % s """ % (json2html.convert (json = data)) – Tobey

+0

jetzt bekomme ich ObjectId ('') ist nicht JSON serializable – Rachel

Verwandte Themen