python3批量发送邮件
这次介绍运用python3批量发送邮件。使用这个功能,我们可以在爬虫中将程序遇到的问题发送到指定邮件,以便及时处理断掉的爬虫。在python中对发送邮件协议STMP的支持有两个模块:smtplib和email两个模块,前者负责发送邮件,后者负责构造邮件。为实现这个功能,我们首先需要两个邮箱,笔者使用网易163邮箱发送,qq邮箱接收。
开始之前需要先对网易邮箱进行设置,开通SMTP服务,具体操作见下图
按照图中的1,2,3以及提示进行操作并设置授权码,此授权码用于第三方登录,也就是我们用第三方软件比如手机“电子邮箱”app进行登录163邮箱时输入的密码不是登录密码,而是授权码。
设置成功后的状态。
设置好之后,进行编写代码
from email.header import Header #处理邮件主题
from email.mime.text import MIMEText # 处理邮件内容
from email.utils import parseaddr, formataddr #用于构造特定格式的收发邮件地址
import smtplib #用于发送邮件
def _format_addr(s):name, addr = parseaddr(s)return formataddr((Header(name, 'utf-8').encode(), addr))
from_addr = '******@163.com'
password = '授权码'
to_addr = 'QQ号@qq.com'
smtp_server = 'smtp.163.com'
msg = MIMEText('Python 爬虫爬取', 'plain','utf-8')
msg['From'] = _format_addr('发送<%s>'%from_addr)
msg['To'] = _format_addr('接收<%s>'%to_addr)
msg['Subject'] = Header('这是邮件主题:一号爬虫运行','utf-8').encode()
server = smtplib.SMTP(smtp_server,25)
server.login(from_addr, password)
server.sendmail(from_addr, to_addr, msg.as_string())
server.quit()
运行程序会在qq邮箱收到下面的邮件信息:
如果我们想将相同的邮件内容发给不同的人,我们只需构造一个for循环,依次拿去收件人地址发送即可:
from email.header import Header #处理邮件主题
from email.mime.text import MIMEText # 处理邮件内容
from email.utils import parseaddr, formataddr #用于构造特定格式的收发邮件地址
import smtplib #用于发送邮件
def _format_addr(s):name, addr = parseaddr(s)return formataddr((Header(name, 'utf-8').encode(), addr))
from_addr = '******@163.com'
password = '授权码'
to_addrs = ['QQ号@qq.com','***@163.com',……]#这里存放批量的邮件地址,或者我们也可以从本地存放邮件地址的文件中读取
smtp_server = 'smtp.163.com'
msg = MIMEText('Python 爬虫爬取', 'plain','utf-8')
msg['From'] = _format_addr('发送<%s>'%from_addr)
msg['Subject'] = Header('这是邮件主题:一号爬虫运行','utf-8').encode()
server = smtplib.SMTP(smtp_server,25)
server.login(from_addr, password)
for to_addr in to_addrs:msg['To'] = _format_addr('接收<%s>'%to_addr)try:server.sendmail(from_addr, to_addr, msg.as_string())except:print('发送失败,再次尝试')server.sendmail(from_addr, to_addr, msg.as_string())print('发送邮件到'+to_addr)
server.quit()
运行改程序后,收件邮箱会收到相应的邮件。
上图是笔者在notebook中运行的结果。
这就是本篇博客的全部内容,欢迎大家批评指正,留言交流。
python3批量发送邮件相关推荐
- Spring多线程批量发送邮件(ThreadPoolTaskExecutor)
1,需求:使用多线程批量发送邮件 需要批量发送邮件大概400封左右,但是因为发送邮件受网络限制,所以经常导致等待超时.所以就想到了使用多线程来发邮件,因为是异步的所以返回结果不受发邮件影响. 2,思路 ...
- python3 批量修改文件扩展名——递归
python3 批量修改文件扩展名--递归 ''' Created on 2017年9月28日@author: kearney '''import osdef isFile(filePath):#修改 ...
- Python3批量转换文本文件编码
Python3批量转换文本文件编码 #-*- coding: utf-8 -*- try:from chardet.universaldetector import UniversalDetector ...
- Python3批量下载网易云音乐热歌榜
Python3批量下载网易云音乐热歌榜 可以批量下载网易云音乐热歌榜的歌曲,可以自己设定数量,速度非常快. https://music.163.com/#/discover/toplist?id=37 ...
- PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...
源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...
- python自动读取excel文件邮箱列表,自动批量发送邮件项目(附使用方法+代码)
python自动发送邮件项目 项目简介 使用方法 项目结构 完整项目代码 结语 项目简介 该项目功能是利用python自动读取excel文件中的邮箱列表,并批量发送邮件到目标邮箱,进行客户挖掘的.该项 ...
- 个人永久性免费-Excel催化剂功能第24波-批量发送邮件并指点不同附件不同变量...
批量发送邮件功能,对高级OFFICE用户来说,第1时间会想到使用WORD的邮件合并功能.但对于需要发送附件来说,邮件合并功能就无能为力,同样还有的限制是用户电脑上没有安装OUTLOOK,同样也不能发送 ...
- 个人永久性免费-Excel催化剂功能第87波-将批量发送邮件做到极致化,需借力Outlook...
在过往的功能中,已经实现过批量发送邮件的功能,但收到的反馈是部分企业邮箱不能用,原因是无解的,因为程序员能找到的公开的类库只能实现一些通用性的场景,太复杂的企业环境可能会失灵. 近期认真来学习Outl ...
- SpringBoot整合SpringEmail 批量发送邮件
SpringBoot整合SpringEmail 批量发送邮件 前言:公司目前有个业务就是向订阅了客户发送邮件,所以我把这块的内容记录下来 1.引入依赖 <!-- email--><d ...
最新文章
- train_test_split 数据集划分,样本划分
- CentOS下编译安装python包管理安装工具pip教程
- AB1601中断的问题
- Java重载容易引发的错误—返回类型
- Exchange端口列表
- Ubuntu SSH Algorithm negotiation failed
- Python学习笔记__10.4章 进程VS线程
- stability condition in queueing system
- 从源码分析快速实现对新开源软件的检测
- c语言数组处理实验报告心得体会,C语言实验报告总结计划数组.doc
- Linq中常用的方法
- 七年前的电脑可以用python_1年前的小五都用 Python 来做什么?
- C语言及程序设计进阶例程-30 联合体及其应用
- Python3.x:定义一个类并且调用
- Python入门经典题斐波那契数列
- 嵌入式学习4--混杂设备驱动
- 苹果电脑计算机找不到打印机,在苹果电脑上连接打印机可以这样操作
- tif文件在html打开,tif格式怎么打开(打开tif文件的操作方法)
- 在css中sticky定位的特性,CSS定位属性sticky详解
- 仿QQ音乐下载歌曲头部导航