查看源码
1 1 #!/usr/bin/env python 2 2 #-*- coding: utf-8 -*- 3 3 4 4 import email 5 5 import smtplib 6 6 import mimetypes 7 7 from email.MIMEMultipart import MIMEMultipart 8 8 from email.MIMEText import MIMEText 9 9 1010 # 邮件列表文件(每行一个邮件地址) 1111 MAIL_FILE_PATH = './emails.txt' 1212 1313 # 邮件内容文件 1414 MAIL_CONTENT_PATH = './page_kfc.html' 1515 1616 # 发件人名称 1717 SENDER_NAME = 'Company Inc.' 1818 1919 # 发件人邮箱 2020 SENDER_MAIL = 'noreply@yourmailhost.com' 2121 2222 # 发件人邮箱密码 2323 SENDER_PSWD = 'yourpassword' 2424 2525 # SMTP 服务器 2626 SMTP_SERVER = 'smtp.yourmailhost.com' 2727 2828 # SMTP 端口 2929 SMTP_PORT = '25' 3030 3131 # 每次发送给几人 3232 RECEIVER_LIMIT_PER_TIME = 10 3333 3434 # ################################################################## 3535 # # 3636 # 以下部分请勿修改 # 3737 # # 3838 # ################################################################## 3939 4040 # 获取收件人列表 4141 def GetReceivers(limit = 10): 4242 f = open(MAIL_FILE_PATH, 'r+') 4343 4444 try: 4545 lines = f.readlines() 4646 finally: 4747 f.close() 4848 4949 receivers = lines[:RECEIVER_LIMIT_PER_TIME] 5050 lines = lines[RECEIVER_LIMIT_PER_TIME:] 5151 5252 f = open(MAIL_FILE_PATH, 'w+') 5353 f.writelines(lines) 5454 f.close() 5555 5656 return receivers 5757 5858 # 批量发送邮件 5959 def SendEmail(sender, senderName, receivers, subject, body): 6060 smtp = smtplib.SMTP(SMTP_SERVER, SMTP_PORT) 6161 smtp.login(SENDER_MAIL, SENDER_PSWD) 6262 6363 if(senderName != ''): 6464 sender = senderName + '<' + sender + '>' 6565 6666 for receiver in receivers: 6767 receiver = receiver.strip() 6868 6969 msg = MIMEMultipart('alternative') 7070 msg['Subject'] = subject 7171 msg['From'] = sender 7272 msg['To'] = receiver 7373 msg.attach(MIMEText(body, 'html', 'utf-8')) 7474 7575 smtp.sendmail(sender, receiver, msg.as_string()) 7676 7777 smtp.quit() 7878 7979 if __name__ == '__main__': 8080 ''' 8181 发送邮件开始 8282 ''' 8383 8484 # 获取本次要发送的邮件地址 8585 receivers = GetReceivers(RECEIVER_LIMIT_PER_TIME) 8686 8787 # 获取邮件标题和内容 8888 f = open(MAIL_CONTENT_PATH, 'r'); 8989 lines = f.readlines() 9090 f.close() 9191 9292 subject = lines[0].strip() 9393 body = ''.join(lines[1:]) 9494 9595 # 发送 9696 SendEmail(SENDER_MAIL, SENDER_NAME, receivers, subject, body)