Python 批量发送邮件脚本

匿名 (未验证) 提交于 2019-12-02 22:51:30
查看源码
 1 #!/usr/bin/env python  2 #-*- coding: utf-8 -*-  3   4 import email  5 import smtplib  6 import mimetypes  7 from email.MIMEMultipart import MIMEMultipart  8 from email.MIMEText import MIMEText  9  10 # 邮件列表文件(每行一个邮件地址) 11 MAIL_FILE_PATH = './emails.txt' 12  13 # 邮件内容文件 14 MAIL_CONTENT_PATH = './page_kfc.html' 15  16 # 发件人名称 17 SENDER_NAME = 'Company Inc.' 18  19 # 发件人邮箱 20 SENDER_MAIL = 'noreply@yourmailhost.com' 21  22 # 发件人邮箱密码 23 SENDER_PSWD = 'yourpassword' 24  25 # SMTP 服务器 26 SMTP_SERVER = 'smtp.yourmailhost.com' 27  28 # SMTP 端口 29 SMTP_PORT = '25' 30  31 # 每次发送给几人 32 RECEIVER_LIMIT_PER_TIME = 10 33  34 # ################################################################## 35 #                                                                  # 36 #                       以下部分请勿修改                           # 37 #                                                                  # 38 # ################################################################## 39  40 # 获取收件人列表 41 def GetReceivers(limit = 10): 42     f = open(MAIL_FILE_PATH, 'r+') 43  44     try: 45         lines = f.readlines() 46     finally: 47         f.close() 48  49     receivers = lines[:RECEIVER_LIMIT_PER_TIME] 50     lines     = lines[RECEIVER_LIMIT_PER_TIME:] 51  52     f = open(MAIL_FILE_PATH, 'w+') 53     f.writelines(lines) 54     f.close() 55  56     return receivers 57  58 # 批量发送邮件 59 def SendEmail(sender, senderName, receivers, subject, body): 60     smtp = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) 61     smtp.login(SENDER_MAIL, SENDER_PSWD) 62  63     if(senderName != ''): 64         sender = senderName + '<' + sender + '>' 65  66     for receiver in receivers: 67         receiver = receiver.strip() 68  69         msg = MIMEMultipart('alternative') 70         msg['Subject'] = subject 71         msg['From'] = sender 72         msg['To'] = receiver 73         msg.attach(MIMEText(body, 'html', 'utf-8')) 74  75         smtp.sendmail(sender, receiver, msg.as_string()) 76  77     smtp.quit() 78  79 if __name__ == '__main__': 80     ''' 81     发送邮件开始 82     ''' 83  84     # 获取本次要发送的邮件地址 85     receivers = GetReceivers(RECEIVER_LIMIT_PER_TIME) 86  87     # 获取邮件标题和内容 88     f = open(MAIL_CONTENT_PATH, 'r'); 89     lines = f.readlines() 90     f.close() 91  92     subject = lines[0].strip() 93     body = ''.join(lines[1:]) 94  95     # 发送 96     SendEmail(SENDER_MAIL, SENDER_NAME, receivers, subject, body)

转载于:https://my.oschina.net/weisenz/blog/200640

文章来源: https://blog.csdn.net/weixin_33859665/article/details/91920905
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!