2016-12-04 12 views
0

私はできる限りこれを説明しようとします。 私が手がかりにしているのは、データベースからデータを収集し、その情報をカスタムのコード化/フォーマットされたHTML/CSS電子メールに入れることです。フォーマット済みのリストを電子メールで送信

このコードを実行するとエラーが発生します:TypeError: 'list'オブジェクトを暗黙的に 'str'に変換できません。 データベースから取得したデータは、各セクションのリスト内の8文字列の結果を戻すので、なぜそのエラーが戻ってくるのか分かります。私は電子メール内のすべてのデータを自動的に埋め込み、このような電子メールのための適切な書式で送信できるようにする方法についてはあまり気にしていません。

import smtplib 
import sys 
import sqlite3 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 

DATABASE = 'Blocs.db' 
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif']) 

print("Getting blocs from server...") 
conn = sqlite3.connect(DATABASE) 
cur = conn.cursor() 
cur.execute("SELECT weburl FROM Blocs") 
weburl_data = cur.fetchall() 
cur.execute("SELECT imgurl FROM Blocs") 
imgurl_data = cur.fetchall() 
cur.execute("SELECT title FROM Blocs") 
title_data = cur.fetchall() 
cur.execute("SELECT notes FROM Blocs") 
notes_data = cur.fetchall() 
conn.commit() 
conn.close() 

from_email = "[email protected]" 
from_pwd = "Password" 
to_email = "[email protected]" 

msg = MIMEMultipart('html') 
msg['Subject'] = "Test SMTPlib Message" 
msg['From'] = "[email protected]" 
msg['To'] = "[email protected]" 

firstHTML = '<html> <head></head> <body><table> <tr>' 
bloc_one = weburl_data 
secondHTML = '</tr></table></body></html>' 

new_html = firstHTML + bloc_one + secondHTML 

msg.attach(MIMEText(new_html, 'html')) 
print(msg) 

mail = smtplib.SMTP('outlook.office365.com', 587) 
mail.ehlo() 
mail.starttls() 
mail.login("[email protected]", "Password") 
mail.sendmail("[email protected]", "[email protected]", msg.as_string()) 
print("email sent") 
mail.quit() 
+1

たぶん、あなたはエラーが発生した何行に言うことができます?! – astraTiCon

+0

imは 'new_html = firstHTML + bloc_one + secondHTML'でエラーが発生していると仮定します。 bloc_oneは依然としてリストであるためです。そのリストを以下の答えのように文字列に変換する必要があります。 – putonspectacles

答えて

0

私は実際にメールを送る部門の専門家ではありませんが、問題がある場合はリストをstrに変換するのはどうして結合してみてください。

new_string = ''.join(name_of_the_list) 

私はそれが役に立てば幸い:)

関連する問題