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()
或許你可以在哪一行說發生了錯誤?! – astraTiCon
即時將假設錯誤發生在'new_html = firstHTML + bloc_one + secondHTML'。因爲bloc_one仍然是一個列表。您應該將該列表轉換爲字符串,如下面的答案。 – putonspectacles