我是python的新手,仍然在学习它,我正在尝试制作一个将电子邮件发送到多封电子邮件的脚本,但是我对此有问题。它继续在第9行打印出错误:
“列表索引必须是整数或切片,而不是str”
我对这意味着什么以及我需要做什么来解决这个问题感到困惑。
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
email_list = ["First@email.com", "second@email.com", "third@email.com", "etc..."]
num = 0
for i in email_list:
msg['To'] = email_list[i] #this line gives the error
num = num + 1
server.sendmail(email, email_list[i], text)
print("Emails Sent: " + num)
我希望输出为“已发送的电子邮件”:3,但不会大笑
答案 0 :(得分:1)
在python中,for e in collections
必须读为“对于集合中的每个元素e”,这意味着e
会使用集合中每个元素的值。
在您的示例中,i
将使用值“ First@email.com”,然后是“ second@email.com”等。而不是您似乎认为的0、1...。
但是,当您执行email_list[i]
时,您试图获取列表的第i个值。由于我们看到i
是一个字符串,因此无法使用。