博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Python实现批量发送邮件
阅读量:5116 次
发布时间:2019-06-13

本文共 1920 字,大约阅读时间需要 6 分钟。

需求:

  给定收件人列表,使用指定的发件人给所有收件人逐个发送邮件,并可以指定邮件内容与附件。

Python代码:

#!/usr/bin/env python3  #coding: utf-8import osimport sysimport smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.mime.image import MIMEImagefrom email.mime.base import MIMEBasefrom email import encoders  #发送服务器配置sender_host = 'smtp.163.com:25'sender_user = 'xxx@163.com'sender_pwd = 'xxx'sender_name = 'xxx@163.com'attach_file = '附件.pdf'#加载邮件内容:第一行是邮件标题, 第二行是分割线, 第三行之后是邮件正文default_title = ''mail_content = ''if not os.path.exists("邮件内容.txt"):    print("文件 邮件内容.txt 不存在");    exit(0);contentFile = open("邮件内容.txt");contentLines = contentFile.readlines();contentFile.close();if len(contentLines) < 3:    print("文件 邮件内容.txt 至少三行");    exit(0);default_title = contentLines[0];mail_content = ''.join(contentLines[2:]);#加载收件人列表if not os.path.exists("收件人列表.txt"):    print("文件 收件人列表.txt 不存在");    exit(0);recvFile = open("收件人列表.txt");recvLines = recvFile.readlines();recvFile.close();#添加附件att = MIMEBase('application', 'octet-stream')  att.set_payload(open(attach_file, 'rb').read())  att.add_header('Content-Disposition', 'attachment', filename=('gbk', '', attach_file));encoders.encode_base64(att);#发送邮件smtp = smtplib.SMTP();smtp.connect(sender_host);smtp.login(sender_user, sender_pwd);for recv in recvLines:    msg = MIMEMultipart('alternative');    msg['Subject'] = default_title;    msg['From'] = sender_name;    msg['To'] = recv;    msg.attach(MIMEText(mail_content));    msg.attach(att);    smtp.sendmail(sender_name, recv, msg.as_string());    print("已发送:" + recv);smtp.quit();

收件人列表示.txt:

10001@qq.com10002@qq.com10003@qq.com

邮件内容.txt

测试标题---------------------------------------------------------------------XX你好,    测试内容1    测试内容2    测试内容3                                                 xxx                                                 2015-11-13

 

转载于:https://www.cnblogs.com/zhuyingchun/p/8932892.html

你可能感兴趣的文章
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Day19内容回顾
查看>>
第七次作业
查看>>
SpringBoot项目打包
查看>>
Linux操作系统 和 Windows操作系统 的区别
查看>>
《QQ欢乐斗地主》山寨版
查看>>
文件流的使用以及序列化和反序列化的方法使用
查看>>
Android-多线程AsyncTask
查看>>
第一个Spring冲刺周期团队进展报告
查看>>
红黑树 c++ 实现
查看>>
Android 获取网络链接类型
查看>>
linux中启动与终止lnmp的脚本
查看>>
gdb中信号的处理[转]
查看>>
LeetCode【709. 转换成小写字母】
查看>>
如何在Access2007中使用日期类型查询数据
查看>>
Jzoj4757 树上摩托
查看>>
CF992E Nastya and King-Shamans(线段树二分+思维)
查看>>
第一个Java Web程序
查看>>
树状数组_一维
查看>>
如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
查看>>