python 快速发送大量邮件
因为公司需求,需要发送千万封级别邮件。
# coding:utf-8
import csv
import smtplib
from email.mime.text import MIMEText
import threadpool
class SendMail():
def __init__(self):
self.msg = MIMEText(mail_msg, 'html', 'utf-8')
self.msg['Subject'] = mailSubject
# 发件人信息
self.msg['From'] = "FreeFire@garena.com"
self.login()
def run(self, user):
res = self.send(user)
if not res:
self.s.login()
self.send(user)
def login(self):
'''
登录smtp server,这里需要手动修改
'''
self.s = smtplib.SMTP('smtp.qq.com', 465, timeout=30)
self.s.login("xxx@qq.com", "password")
def send(self, user):
try:
self.msg['To'] = user
self.s.sendmail(self.msg['From'], self.msg['To'], self.msg.as_string())
f.write("{} 发送成功\n".format(user))
print("{} 发送成功".format(user))
return True
except Exception as e:
print("{} 发送失败".format(user))
f.write("{} 发送失败\n".format(user))
import traceback
traceback.print_exc()
return False
def __del__(self):
self.s.close()
def sm(user):
SendMail().run(user)
if __name__ == '__main__':
with open('test.html', 'r+') as f:
mail_msg = f.read()
mailSubject = "the is test mail"
# 发送日志
f = open('send.log', 'a+')
# 发送邮件列表
mails = []
# mails_path: 一个csv文件,里面是所有的mail信息
mails_path = "test-users.txt"
with open(mails_path, newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
mails.append(row['email'])
pool = threadpool.ThreadPool(2)
requests = threadpool.makeRequests(sm, mails)
[pool.putRequest(req) for req in requests]
pool.wait()
f.close()
python 快速发送大量邮件的更多相关文章
- PHP调用Python快速发送高并发邮件
1 简介 在PHP中发送邮件,通常都是封装一个php的smtp邮件类来发送邮件.但是PHP底层的socket编程相对于Python来说效率是非常低的.CleverCode同时写过用python写的爬虫 ...
- python实现发送文本邮件
简单实现了python发送文本邮件 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/4/25 17:09 # @Author ...
- python——SMTP发送简单邮件
[root@localhost python]# cat smtp.py import smtplib import string from email.mime.text import MIMETe ...
- python定时利用QQ邮件发送天气预报
大致介绍 好久没有写博客了,正好今天有时间把前几天写的利用python定时发送QQ邮件记录一下 1.首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.c ...
- 使用python发送QQ邮件
这里用到了Python的两个包来发送邮件: smtplib 和 email . Python 的 email 模块里包含了许多实用的邮件格式设置函数,可以用来创建邮件“包裹”.使用的 MIMEText ...
- 九、Python发送QQ邮件(SMTP)
看了廖雪峰老师的教程: 一封电子邮件的旅程就是 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人 ...
- python初级实战-----关于邮件发送问题
python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用.smtplib模块主要负责发送邮件,email模块主要负责构造邮件. sm ...
- 【python】脚本连续发送QQ邮件
今天习得用python写一个连续发送QQ邮件的脚本,经过测试,成功给国内外的服务器发送邮件,包括QQ邮箱.163邮箱.google邮箱,香港科技大学的邮箱和爱丁堡大学的邮箱.一下逐步解答相关技巧. 首 ...
- python 发送邮件(收到的邮件要有发送方才能回复)
Python使用SMTP(简单邮件传输协议)发送邮件 普通文本邮件 普通文本邮件发送的实现,关键是要将MIMEText中_subtype设置为plain ## -*- coding: UTF-8 -* ...
随机推荐
- 【JZOJ5263】分手是祝愿
Description 请注意本题的数据范围. Input Output Sample Input 2 2 15 19 3 30 40 20 Sample Output 285 2600 Hint 数 ...
- java架构之路-(Redis专题)Redis的高性能和持久化
上次我们简单的说了一下我们的redis的安装和使用,这次我们来说说redis为什么那么快和持久化数据 在我们现有的redis中(5.0.*之前的版本),Redis都是单线程的,那么单线程的Redis为 ...
- Flask的使用以及返回值(其中Response后续详细单独补充)
一.使用 安装依赖pip3 install flask 第一步 创建Flask对象 from flask import Flask app =Flask(__name__) 第二步 创建路由 @app ...
- [POJ3107] Godfather - 暴力枚举(树的重心)
Godfather Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8728 Accepted: 3064 Descrip ...
- vue-router之to属性赋值
to属性赋值 <!-- html --> <div id="app"> <router-link to="/bj/朝阳区"> ...
- Spring入门(五):Spring中bean的作用域
1. Spring中bean的多种作用域 在默认情况下,Spring应用上下文中所有的bean都是以单例(singleton)的形式创建的,即不管给定的一个bean被注入到其他bean多少次,每次所注 ...
- python学习-列表、元组和字典(三)
学习笔记中的源码:传送门 3.1 列表和元组 3.2 不同类型变量的初始化: 数值 digital_value = 0 字符串 str_value = "" 或 str_value ...
- OpenvSwitch系列之ovs-ofctl命令使用
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl 命令使用 OpenvSwit ...
- UNCTF杂项题Hidden secret 之NTFS交换数据流隐写
---恢复内容开始--- 做这道题目的经历比较坎坷,题目中用于隐藏flag的jpg文件出了问题,导致不能被交换数据流隐写所以出题人换了一次题目,最后做法也换了,不过出题人一开始的考察点还是基于NTFS ...
- 记录一次gdb debug经历
目录 问题描述 查看core文件 使用gdb查看core文件 总结 问题描述 今天在写代码时,运行时奔溃了.segment fault,而且是在程序退出main()函数后,才报的. 唯一的信息是:Se ...