所以我会尽力解释这个问题。 我手头的任务是从数据库中收集数据并将该信息放入自定义编码/格式化的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 = "test@email.com"
from_pwd = "Password"
to_email = "sendHere@email.com"
msg = MIMEMultipart('html')
msg['Subject'] = "Test SMTPlib Message"
msg['From'] = "test@email.com"
msg['To'] = "sendHere@email.com"
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("test@email.com", "Password")
mail.sendmail("test@email.com", "sendHere@email.com", msg.as_string())
print("email sent")
mail.quit()
答案 0 :(得分:0)
我不是邮件发送部门的专家,但如果你只是将问题列表转换为str,为什么不尝试加入呢?
new_string = ''.join(name_of_the_list)
我希望它有所帮助:)