如何匹配收件人姓名前提是我的解释器是IDLE3.6(习惯了,不想升级)以两个邮箱为例。to_emails=['123@qq.com','456@qq.com']to_names=['怪盗基德','上杉绘依']自动群发邮件,大多在处理收件人姓名时使用join功能处理,形成逗号分隔的字符串。官方说:Header接受的第一个参数的数据类型必须是string或者byte,不能解码list。to_names=['怪盗基德','ErikaUesugi']msg['To']=Header(",".join)但是,我试过了,没用,两个邮箱的收件人都是怪盗基德,上杉绘里。不知道是什么原因,不排除是版本问题。有道友知道的可以告诉我。如上图,两个名字连在一起(忘了KaitoKidd)。外汇经纪商没有办法对比https://www.fx61.com/brokerlist,所以笔者只好另辟蹊径,想出了两种解决方案。[1]遍历列表[2]使用Excel表格[1]遍历两个列表请输入发件人邮箱:')password=input('请输入发件人邮箱授权码:')to_namelist=[]to_addrs=[]number=0whileTrue:name=input('请输入收件人:')to_namelist.append(name)email=input('请输入收件人邮箱地址:')to_addrs.append(email)temp=input('(群发)是否继续输入邮箱地址,输入n后按回车退出,任意键继续:')number=number+1iftemp=='n':breaksmtp_server='smtp.qq.com'input_subject=input('请输入邮件主题:')text=input('请输入电子邮件内容:')foriinrange(number):to_name=to_namelist[i]to_addr=to_addrs[i]msg=MIMEText(text,'plain','utf-8')msg??['From']=Header(from_name)msg??['To']=Header(to_name)msg??['Subject']=Header(input_subject)server=smtplib.SMTP_SSL()server.connect(smtp_server,465)server.login(from_addr,密码)server.sendmail(from_addr,to_addr,msg.as_string())服务er.quit()now=time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time()))print(now)print('邮件发送成功!')[2]将两个列表通过csv放入Excel表格,然后循环读取Excel表格importtimeimportsmtplibfromemail.mime.textimportMIMETextfromemail.headerimportHeaderimportcsv#Senderinformationfrom_addr='1499823573@qq.com'password='xzrbanqjofkugaei'#如果已有Excel表格,则无需新建。如果没有csv,就得考虑新建一个csv文件#方法一:通过已有的list新建一个csv文件#data=[['怪盗基德','123@qq.com'],['上杉eryi','@456.com']]#方法二:通过input形成一个list,新建一个csv文件dataemail=[]dataname=[]data=[]number=0whileTrue:input_name=input('请输入收件人地址(可以随便写):')dataname.append(input_name)input_email=input('请输入收件人邮箱:')dataemail.append(input_email)b=input('是否继续输入,n退出,任意键继续:')number=number+1ifb=='n':breaki=0foriinrange(number):data.append([dataname[i],dataemail[i]])withopen('C:/Users/ASUS/Desktop/emaildata.csv','a',newline='')asf:writer=csv.writer(f)forrowindata:writer.writerow(row)input_fromname=input('请输入发件人:')input_subject=input('请输入邮件主题:')text=input('请输入群发邮件内容:')withopen('C:/Users/ASUS/Desktop/Mailboxdata.csv','r')asf:reader=csv.reader(f)对于阅读器中的行:to_addrs=row[1]to_name=row[0]#text='ncoqw'msg=MIMEText(text,'plain','utf-8')msg??['From']=Header(input_fromname)msg??['To']=Header(to_name)msg??['Subject']=Header(input_subject)server=smtplib.SMTP_SSL()server.connect('smtp.qq.com',465)server.login(from_addr,password)server.sendmail(from_addr,to_addrs,msg.as_string())server.quit()now=time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time()))print(now)print('邮件发送成功!')这里有个点是一开始没想到的data.append([dataname[i],dataemail[i]])
