TypeError:无法连接' str'和'列出'邮件中的对象

时间:2014-10-23 05:36:10

标签: python

我正在使用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()

2 个答案:

答案 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}}中提取元素转换它们一起提交到liststr。所以你应该替换代码行:

.join()

由:

msg = header + x