2016-12-15 2 views
-1

私はpythonを使ってhtmlベースの電子メールを作成しようとしています。だから私の電子メールのコンテンツでは、mongodbコレクションの内容のリストを表示するためのhtmlテーブルを作成したい、最後の24時間以内に追加された別の顧客に関するデータが含まれています。mongoデータベースからpythonでhtml電子メールにデータを渡してテーブルベースの要約を表示するには

jsonレスポンスをmongoからpythonでhtml電子メールに挿入する方法を教えてください。私がここで使っているjsonの応答はデータです。以下は

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 
} 

これまで持っているものである: -

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

どこに問題がありますか?あなたはデータを持っていますが、それをHTMLに挿入する際の問題は何ですか? –

+0

@DanielRosemanええ、データはありますが、データを表に挿入して、電子メールで表形式のデータを取得することはできません。 – Rachel

+0

しかし、どうしてですか?何を試しましたか?それは単なる文字列です。 –

答えて

0

JSONオブジェクトは、独自のものを書くの周り

from pymongo import MongoClient 
from collections import OrderedDict 

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

そして、代わりに移動しないようにするには、注文した辞書を使用する必要がありますテーブルパーサー、json2html(pythonの力;)のような既成のモジュールを使用してください)


あなたが唯一の必須フィールド

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

と複数の行のための新しい辞書を作成する必要がありますので、ライブラリはdicts

table_json = [{...}, {...}, ...] 
のリストを必要とし、テーブルに辞書内のすべてのフィールドを変換します
+0

良い見えます。 のhtml = "" "\ json2html.convert(JSON = DATAT) """ これは私が – Rachel

+0

はこれを試してみてください私のコードに追加するsuppsoedい方法です。 "" "\ % sの """ %(json2html.convert(JSON =データ)) – Tobey

+0

は、今私が( '')のObjectIdを取得し、シリアライズ – Rachel

関連する問題