Python 批量发送邮件脚本

查看源码

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)
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )