Python 如何使用csv文件向个人发送电子邮件?
我对python还相当陌生,我正在尝试编写一个代码,它将接收一个csv文件并将所有电子邮件发送到一行中,同时每次都切换名称。以下是我写的:Python 如何使用csv文件向个人发送电子邮件?,python,csv,smtplib,Python,Csv,Smtplib,我对python还相当陌生,我正在尝试编写一个代码,它将接收一个csv文件并将所有电子邮件发送到一行中,同时每次都切换名称。以下是我写的: import smtplib import csv def nobrackets(current): return str(current).replace('[','').replace(']','') def noastrick(current): return str(current).replace('\'','').replace
import smtplib
import csv
def nobrackets(current):
return str(current).replace('[','').replace(']','')
def noastrick(current):
return str(current).replace('\'','').replace('\'','')
sender_email = "xxxxxxxxx"
password = "xxxxxxxxx"
names=[]
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(sender_email, password)
print("Login success")
with open('Emails.csv','r') as csv_file:
csv_reader=csv.reader(csv_file)
for line in csv_reader:
names.append(line[0])
message=('Hey', noastrick(nobrackets(names)),'how are you doing?')
server.sendmail(sender_email, line, message)
names.clear()
问题是,我成功登录,但随后我得到一堆关于文件/系统/库的文本,它给了我一个错误:TypeError:expected string或buffer。
有人知道发生了什么吗?使用
server.sendmail(sender_email, line, message)
消息
可以是包含ASCII范围内字符的字符串,也可以是字节字符串
但是,在您的代码中,message
是一个元组。把它转换成字符串,你就可以开始了。例如:
server.sendmail(sender_email, line, " ".join(message))
如果您发布整个错误消息,可能会有所帮助。话虽如此,只是猜测一下,它可能与您的消息字符串有关——看起来您传递的是一个元组作为消息,而不是字符串 而不是: message=('Hey',noastrick(nobrackets(names)),'how you do do?') 或许可以尝试: 消息=(嘿{noastrick(nobrakets(名字))}你好吗?) 该建议使用一个f字符串文字来生成一个字符串,其中函数的结果作为字符串直接插入字符串中,因此消息变量将包含字符串而不是元组