我正在使用python发送电子邮件。现在,我想通过电子邮件从列表中发送条目,但我遇到一个错误,说“TypeError:无法连接'str'和'list'对象”,我不知道调试它。以下是我的代码。我仍然是这种语言的新手(3周)所以我有一点背景。
import smtplib
x = [2, 3, 4] #list that I want to send
to = '' #Recipient
user_name = '' #Sender username
user_pwrd = '' #Sender Password
smtpserver = smtplib.SMTP("mail.sample.com",port)
smtpserver.ehlo()
smtpserver.starttls()
smtpserver.ehlo()
smtpserver.login(user_name,user_pwrd)
#Header Part of the Email
header = 'To: '+to+'\n'+'From: '+user_name+'\n'+'Subject: \n'
print header
#Msg
msg = header + x #THIS IS THE PART THAT I WANT TO INSERT THE LIST THAT I WANT TO SEND. the type error occurs in this line
#Send Email
smtpserver.sendmail(user_name, to, msg)
print 'done!'
#Close Email Connection
smtpserver.close()
答案 0 :(得分:32)
问题在于msg = header + x
。您正在尝试将+
运算符应用于字符串和列表。
我不确定您希望x
显示的方式,但是,如果您需要&#34; [1,2,3]和#34;之类的内容,则需要:< / p>
msg = header + str(x)
或者你可以做到,
msg = '{header}{lst}'.format(header=header, lst=x)
答案 1 :(得分:2)
问题是在代码行msg = header + x
中,名称header
是一个字符串,而x
是一个列表,因此这两个不能使用+
运算符连接。解决方案是将x
转换为字符串。这样做的一种方法是将从<{1}}中提取元素,转换它们一起提交到list
和str
。所以你应该替换代码行:
.join()
由:
msg = header + x