主页 > 开发 > 用Python自动群发邮件给欠钱老赖,哭着喊着把钱还你

用Python自动群发邮件给欠钱老赖,哭着喊着把钱还你

今日头条 开发 2020年08月20日

如何把收件人名字一一对应

本文适合有一丢丢会自动发邮件的道友看,仅供参考,坑位有限。

前提条件,我的解释器是 IDLE 3.6 (用惯了,不想升级)

以两个邮箱为例子。


  1. to_emails=['123@qq.com','456@qq.com'
  2. to_names=['怪盗基德','上杉绘梨衣'

自动群发邮件,处理收件人姓名时大多是用join函数处理,

形成以逗号分隔的字符串。

官方大大说:Header接受的第一个参数的数据类型必须要是字符串或者字节,列表是不能解码。


  1. to_names=['怪盗基德','上杉绘梨衣'
  2. msg['To'] = Header(",".join

But,我试了一下,没有用,两个邮箱的收件人都是怪盗基德,上杉绘梨衣。不确定是什么原因,不排除是版本问题,有网友知道可以跟我说一下哈。

1、遍历两个列表


  1. import smtplib 
  2. from email.mime.text import MIMEText 
  3. from email.header import Header 
  4. import time 
  5.  
  6. from_name = input('请输入发件人:'
  7. from_addr = input('请输入发件人邮箱:'
  8. password = input('请输入发件人邮箱授权码:'
  9.  
  10. to_namelist = [] 
  11. to_addrs = [] 
  12. number=0    
  13.  
  14. while True
  15.     name=input('请输入收件人:'
  16.     to_namelist.append(name
  17.     email=input('请输入收件儿邮箱:'
  18.     to_addrs.append(email) 
  19.     temp=input('(可群发)是否继续输入邮箱,输入n加回车键退出,输入任意键继续:'
  20.     number=number+1    
  21.     if temp=='n'
  22.         break 
  23.  
  24. smtp_server ='smtp.qq.com'     
  25.  
  26. input_subject = input('请输入邮件主题:'
  27.  
  28. text = input('请输入邮件内容:'
  29.  
  30. for i in range(number):           
  31.     to_name=to_namelist[i] 
  32.     to_addr=to_addrs[i] 
  33.     msg = MIMEText(text,'plain','utf-8'
  34.     msg['From'] = Header(from_name) 
  35.     msg['To'] = Header(to_name)    
  36.     msg['Subject'] = Header(input_subject) 
  37.     server = smtplib.SMTP_SSL() 
  38.     server.connect(smtp_server,465) 
  39.     server.login(from_addr, password
  40.     server.sendmail(from_addr,to_addr, msg.as_string()) 
  41.     server.quit() 
  42. now=time.strftime('%Y-%m-%d %H:%M:%S'
  43. time.localtime(time.time())) 
  44. print(now) 
  45. print('邮件发送成功!'

2、将两个列表通过csv放进Excel表格里,再通过读取Excel表格进行循环

用Python自动群发邮件给欠钱老赖,哭着喊着把钱还你

  1. import time 
  2. import smtplib 
  3. from email.mime.text import MIMEText 
  4. from email.header import Header 
  5. import csv 
  6.  
  7.  
  8. #发件人信息 
  9. from_addr='1499823573@qq.com' 
  10. password='xzrbanqjofkugaei' 
  11.  
  12.  
  13. #如果有Excel表格就不用新建了,没有csv就得考虑新建csv文件 
  14.  
  15.  
  16. #方式一:通过现有列表新建csv文件 
  17. #data=[['怪盗基德','123@qq.com'],['上杉绘梨衣','@456.com']] 
  18.  
  19. #方式二:通过输入形成列表再新建csv文件 
  20. dataemail=[] 
  21. dataname=[] 
  22. data=[] 
  23. number=0 
  24. while True
  25.     input_name=input('请输入收件人称呼(可随意写):'
  26.     dataname.append(input_name) 
  27.     input_email=input('请输入收件人邮箱账号:'
  28.     dataemail.append(input_email) 
  29.     b=input('是否继续输入,n退出,任意键继续:'
  30.     number=number+1 
  31.     if b=='n'
  32.         break 
  33.      
  34. i=0 
  35. for i in range(number): 
  36.     data.append([dataname[i],dataemail[i]]) 
  37.  
  38. with open('C:/Users/ASUS/Desktop/邮箱数据.csv','a',newline=''as f: 
  39.     writer=csv.writer(f) 
  40.     for row in data: 
  41.         writer.writerow(row) 
  42.  
  43. input_fromname=input('请输入发件人:'
  44. input_subject=input('请输入邮件主题:'
  45. text=input('请输入邮件群发内容:'
  46. with open('C:/Users/ASUS/Desktop/邮箱数据.csv','r'as f: 
  47.     reader=csv.reader(f) 
  48.     for row in reader: 
  49.         to_addrs=row[1] 
  50.         to_name=row[0] 
  51.         #text='ncoqw' 
  52.         msg=MIMEText(text,'plain','utf-8'
  53.         msg['From']=Header(input_fromname) 
  54.         msg['To']=Header(to_name) 
  55.         msg['Subject']=Header(input_subject) 
  56.         server=smtplib.SMTP_SSL() 
  57.         server.connect('smtp.qq.com',465) 
  58.         server.login(from_addr,password
  59.         server.sendmail(from_addr,to_addrs,msg.as_string()) 
  60. server.quit() 
  61.          
  62. now=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) 
  63. print(now) 
  64. print('邮件发送成功!'

这里有个点刚开始没想到


  1. data.append([dataname[i],dataemail[i]]) 
标签: