这次介绍运用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批量发送邮件相关推荐

  1. Spring多线程批量发送邮件(ThreadPoolTaskExecutor)

    1,需求:使用多线程批量发送邮件 需要批量发送邮件大概400封左右,但是因为发送邮件受网络限制,所以经常导致等待超时.所以就想到了使用多线程来发邮件,因为是异步的所以返回结果不受发邮件影响. 2,思路 ...

  2. python3 批量修改文件扩展名——递归

    python3 批量修改文件扩展名--递归 ''' Created on 2017年9月28日@author: kearney '''import osdef isFile(filePath):#修改 ...

  3. Python3批量转换文本文件编码

    Python3批量转换文本文件编码 #-*- coding: utf-8 -*- try:from chardet.universaldetector import UniversalDetector ...

  4. Python3批量下载网易云音乐热歌榜

    Python3批量下载网易云音乐热歌榜 可以批量下载网易云音乐热歌榜的歌曲,可以自己设定数量,速度非常快. https://music.163.com/#/discover/toplist?id=37 ...

  5. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  6. python自动读取excel文件邮箱列表,自动批量发送邮件项目(附使用方法+代码)

    python自动发送邮件项目 项目简介 使用方法 项目结构 完整项目代码 结语 项目简介 该项目功能是利用python自动读取excel文件中的邮箱列表,并批量发送邮件到目标邮箱,进行客户挖掘的.该项 ...

  7. 个人永久性免费-Excel催化剂功能第24波-批量发送邮件并指点不同附件不同变量...

    批量发送邮件功能,对高级OFFICE用户来说,第1时间会想到使用WORD的邮件合并功能.但对于需要发送附件来说,邮件合并功能就无能为力,同样还有的限制是用户电脑上没有安装OUTLOOK,同样也不能发送 ...

  8. 个人永久性免费-Excel催化剂功能第87波-将批量发送邮件做到极致化,需借力Outlook...

    在过往的功能中,已经实现过批量发送邮件的功能,但收到的反馈是部分企业邮箱不能用,原因是无解的,因为程序员能找到的公开的类库只能实现一些通用性的场景,太复杂的企业环境可能会失灵. 近期认真来学习Outl ...

  9. SpringBoot整合SpringEmail 批量发送邮件

    SpringBoot整合SpringEmail 批量发送邮件 前言:公司目前有个业务就是向订阅了客户发送邮件,所以我把这块的内容记录下来 1.引入依赖 <!-- email--><d ...

最新文章

  1. train_test_split 数据集划分,样本划分
  2. CentOS下编译安装python包管理安装工具pip教程
  3. AB1601中断的问题
  4. Java重载容易引发的错误—返回类型
  5. Exchange端口列表
  6. Ubuntu SSH Algorithm negotiation failed
  7. Python学习笔记__10.4章 进程VS线程
  8. stability condition in queueing system
  9. 从源码分析快速实现对新开源软件的检测
  10. c语言数组处理实验报告心得体会,C语言实验报告总结计划数组.doc
  11. Linq中常用的方法
  12. 七年前的电脑可以用python_1年前的小五都用 Python 来做什么?
  13. C语言及程序设计进阶例程-30 联合体及其应用
  14. Python3.x:定义一个类并且调用
  15. Python入门经典题斐波那契数列
  16. 嵌入式学习4--混杂设备驱动
  17. 苹果电脑计算机找不到打印机,在苹果电脑上连接打印机可以这样操作
  18. tif文件在html打开,tif格式怎么打开(打开tif文件的操作方法)
  19. 在css中sticky定位的特性,CSS定位属性sticky详解
  20. 仿QQ音乐下载歌曲头部导航

热门文章

  1. Android 二维码/条形码的识别或生成
  2. Java内存的一点理解, 静态方法和实例方法的区别及使用场景
  3. Python 语句跳出循环
  4. Java数据类型系列之BigDecimal
  5. 论蒟蒻如何怒艹noiau
  6. 统计报表指的是什么?有什么专业的报表制作软件?
  7. 微信小程序底部tabBar配置
  8. JBPM知识点------JPDL3.1规范
  9. 互联网Internet与internet互连网
  10. 【Android导航 君子生非异也 善假于物也】优秀博客