Python3.6自动群发邮件,如何把收件人名字一一对应 |
您所在的位置:网站首页 › python批量发送邮件改称呼 › Python3.6自动群发邮件,如何把收件人名字一一对应 |
Python3.6自动群发邮件,
如何把收件人名字一一对应
本文适合有一丢丢会自动发邮件的道友看,仅供参考,坑位有限。 前提条件,鄙人的解释器是IDLE 3.6(用惯了,不想升级) 以两个邮箱为例子。 to_emails=['[email protected]','[email protected]'] to_names=['怪盗基德','上杉绘梨衣']自动群发邮件,处理收件人姓名时大多是用join函数处理, 形成以逗号分隔的字符串。 官方大大说:Header接受的第一个参数的数据类型必须要是字符串或者字节,列表是不能解码。 to_names=['怪盗基德','上杉绘梨衣'] msg['To'] = Header(",".join)But,我试了一下,没有用,两个邮箱的收件人都是怪盗基德,上杉绘梨衣。不确定是什么原因,不排除是版本问题,有道友知道可以跟我说一下哈。
没办法,笔者只好另辟蹊径,想出了有两种解决方案。 【1】遍历列表 【2】利用Excel表格 【1】遍历两个列表 import smtplib from email.mime.text import MIMEText from email.header import Header import time from_name = input('请输入发件人:') from_addr = input('请输入发件人邮箱:') password = input('请输入发件人邮箱授权码:') to_namelist = [] to_addrs = [] number=0 while True: name=input('请输入收件人:') to_namelist.append(name) email=input('请输入收件儿邮箱:') to_addrs.append(email) temp=input('(可群发)是否继续输入邮箱,输入n加回车键退出,输入任意键继续:') number=number+1 if temp=='n': break smtp_server ='smtp.qq.com' input_subject = input('请输入邮件主题:') text = input('请输入邮件内容:') for i in range(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, password) server.sendmail(from_addr,to_addr, msg.as_string()) server.quit() now=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) print(now) print('邮件发送成功!')【2】将两个列表通过csv放进Excel表格里,再通过读取Excel表格进行循环 这里有个点刚开始没想到 data.append([dataname[i],dataemail[i]])生成列表嵌套列表,原本以为append只能新增一个元素,没想到也能新增列表。 道行太浅,有什么纰漏的地方,还望阁下指点一二。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |