python自动群发邮件_24.python之自动群发邮件(1)
学习python的目的是为了让我们的工作生活能够更加轻松,和上节课一样,本节课讲一个python的实际应用——自动群发邮件。
发送邮件需要用到smtplib和email两个模块,这两个都是内置模块,不需要安装。其中smtplib模块负责发送邮件,email模块负责构造邮件内容。
python中模块繁多,想要都学会很难。我们可以根据自己的需要来学习。在搜索学习方法时,一方面可以根据模块名称来搜索,比如【smtplibl模块】,另一方面也可以根据关键字搜索,比如【python 发送邮件】。
对于学习模块,要搞清楚模块中存在哪些方法以及方法的使用。这些都可以通过网络搜索+自己动手操作来学习。为了节约篇幅,我省略了搜索过程,直接开始操作。总结下搜索到的信息,发送邮件需要用到smtplib模块中的以下代码:
import smtplib
server = smtplib.SMTP()
server.connect(host, port)
server.login(username, password)
server.sendmail(sender, to_addr, msg.as_string())
server.quit()
第一行是导入smtplib模块,第三行是调用smtplib模块中的SMTP协议,smtplib.SMTP()是变量server的值,之后再使用smtplib.SMTP()中的方法时只要写【server.方法】即可。顺便一提,SMTP的意思是简单邮件传输协议,是由原服务器到目的服务器传送邮件的一组规则。
第四行代码是连接服务器,host是指定连接的邮箱服务器的域名,post是端口,一般情况下SMTP默认端口是25。如果25不行,可以通过搜索或者去邮箱设置里面查看端口。
以QQ邮箱为例,通过搜索【QQ邮箱 smtp设置】可知,SMPT服务器地址是【http://smtp.qq.com】,端口是465或587。
这里将端口写为465,实际操作中可以先尝试默认值,如果不行再尝试其它。将host和port的值代入,代码如下:
server.connect(‘smtp.qq.com’, 465)
注意,QQ邮箱一般默认关闭SMTP服务,需要先开启它。开启方法是,登录邮箱,在顶部的【设置】按钮中选择【账户】,然后下拉到下图位置,将【开启服务】中的【POP3/SMTP服务】开启。
开启时需要保密手机发送短信,完成后会收到QQ邮箱提供的授权码,有了这个授权码就可以不通过网页邮箱或邮箱客服端登录,而是用邮箱账号+授权码获取邮箱服务器内容。授权码一定要保存好,因为使用SMTP服务登录邮箱时,要输入授权码作为登录密码。
第五行代码的作用是输入用户名和密码登录邮箱,用户名是登录邮箱地址,密码是上面提到的授权码。因为用户名和授权码是敏感信息,所以这里会用input()函数在代码运行时输入,并将值赋给变量。代码如下:
from_addr = input('请输入发件邮箱登录用户名')
password = input('请输入发件邮箱授权码')
server.login(from_addr,password)
第6行代码中的三个参数分别是发件人、收件人和邮件内容。代码如下:
to_addr = 'xxxx@qq.com'
server.sendmail(from_addr,to_addr,msg.as_string())
发件人指的是登录邮箱,和第五行代码中的登录名一致,因此都用变量from_addr。收件人指的是接收邮件的邮箱地址。邮件内容中msg是变量,后面的【.as_string】的作用是将变量转化为字符串的形式。变量如何赋值会在后面的email模块中讲到。
第七行代码【server.quit()】的作用是退出服务器。到这里关于smtplib模块就讲完了,整理下前面讲到的代码,如下:
import smtplib
#发件人的信息
from_addr = input('请输入发件邮箱登录用户名')
password = input('请输入发件邮箱授权码')
#收件人邮箱
to_addr = 'xxxx@qq.com'
#调用smtplib模块中的SMTP协议
server = smtplib.SMTP()
#指定连接服务器的域名和端口
server.connect('smtp.qq.com',25)
#输入用户名和授权码,登录邮箱
server.login(from_addr,password)
#输入发件人、收件人和邮件内容,发送邮件
server.sendmail(from_addr,to_addr,msg.as_string())
#关闭服务器
server.quit()
接下来是email模块。email模块是用来写邮件内容的,内容可以是纯文本、HTML、图片、附件等多种形式。导入email模块代码如下:
#内容形式为纯文本、HTML
from email.mime.text import MIMEText
#内容形式为图片
from email.mime.image import MIMEImage
#内容形式为组合,可包含文本和附件
from email.mime.multipart import MIMEMultipart
下面我们从最基础的入手,导入内容形式为纯文本的方法,发一封内容只有一句话的邮件。代码如下:
from email.mime.text import MIMEText
#通过变量msg给邮件正文赋值
msg = MIMEText('send by python','plain','gbk')
第二行代码中,第一个参数是邮件的内容,第二个参数是文本类型,默认是plain(纯文本),第三个参数是文本编码,中文为“gbk”。到这里代码就完成了,整理完成的代码如下:
import smtplib
from email.mime.text import MIMEText
#发件人信息
from_addr = input('请输入发件邮箱登录用户名')
password = input('请输入发件邮箱授权码')
#收件人邮箱
to_addr = 'xxxx@qq.com'
#通过变量msg给邮件正文赋值
msg = MIMEText('send by python','plain','gbk')
#调用smtplib模块中的SMTP协议
server = smtplib.SMTP()
#指定连接服务器的域名和端口
server.connect('smtp.qq.com',25)
#输入用户名和授权码,登录邮箱
server.login(from_addr,password)
#输入发件人、收件人和邮件内容,发送邮件
server.sendmail(from_addr,to_addr,msg.as_string())
#关闭服务器
server.quit()
代码可以分为三部分,第一部分是导入模块,第二部分是定义变量,包括发件人信息、收件人邮箱和邮件正文,第三部分是通过SMTP协议中的方法连接服务器,登录邮箱,发送邮件。
运行上面的代码,如果没有报错,应该会收到一封如下图所示的邮件。如果报错也不要紧张,按照提示进行排查,这是一个积累debug经验的好机会。
看到上面的邮件,你会发现它太简陋了。没有发件人信息,没有主题,正文内容简单......不要着急,下节课我们将继续完善这封邮件。
python自动群发邮件_24.python之自动群发邮件(1)相关推荐
- python积分管理系统_python实现每天自动签到领积分的示例代码
自动签到的python脚本源码 新建一个python文件,checkin.py,保存到电脑上某个位置,我这里保存到的是E:\pyproject\checkin.py # 引入3个包 from sele ...
- 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法
在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 参考文章: (1)在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 (2)https://www.cnbl ...
- python股票自动交易从零开始-python程序化交易编程-python制作自动交易程序!
如何用python进行期货程序化交易 .程序化交易系统目前主要是通过计算机程序实现的,其实就是把交易者决策的过程用计算机语言描述出来,然后由计算机给出交易建议或直接发送交易指令到期货公司的. SDYG ...
- 怎样在python代码中输入π_鼠标自动点击、键盘自动输入?几行Python代码搞定
相信我,你以后一定会用到.实在不行,你先收藏,做个收藏家,等拿出来,就值钱了. 第一步:安装并导入相关模块 只需要安装PyUserInput,如下: pip install PyUserInput 如 ...
- 2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件
Python TimedRotatingFileHandler 修改suffix后无法自动删除文件 TimedRotatingFileHandler 用法 "S": Seconds ...
- 电脑重启后python导入的库不见_为什么python不会在启动时自动导入每个模块?
我正在玩Python 2.7,每个人都知道,在每个程序的开头,你总是需要导入模块.例如:import random import time for x in range(1, 300): print ...
- pythoncookie自动模拟登录_用Python模拟技巧带你实现自动抽屉登录自动点赞
原标题:用Python模拟技巧带你实现自动抽屉登录&自动点赞 /1 前言/ 嘿,各位小伙伴们晚上好呀,今天小编又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞! 原计划是不打算 ...
- python自动备份手机_python实现自动备份windows应用数据
开发这个功能主要是刚开始要备份几台windows服务器的用户数据,后来写到最后就变成了一个数据备份通用工具了,程序可以根据配置文件的配置进行目录数据的备份,只要指定备份的目录,程序会自动调用系统win ...
- 技术要点|Python监控学生端电脑屏幕自动识别学习状态
技术要点: 1)使用pillow扩展库进行屏幕截图: 2)使用多线程监听学生端连接: 3)使用TCP协议传输屏幕图像: 4)使用标准库zlib进行数据压缩: 5)使用OCR提取屏幕截图中的文字. 具体 ...
最新文章
- 【Netty】Netty解决粘包和拆包问题的四种方案
- UI+Class Object
- SAP CRM WebClient UI data loss设计原理
- python基础03——数据类型string
- 疑似三星Galaxy S11入网:搭载骁龙865处理器+支持25W快充
- Git命令行介绍和使用说明(持续更新)
- 二分法之旋转有序数组
- [导入]Nebula3学习笔记(3): Core Namespace
- python基础知识——函数(中)
- Intel i5-7200U (3100MHZ),1*8GB(DDR3 1600) 在 Aida64 V5.97.4600 的测试结果
- c语言电脑蓝屏代码,电脑蓝屏代码0x0000001a的解决方法
- 区块链掀起的认知革命!|筱静观察
- 做人10大心机:不能太单纯 适度伪装自己
- android手机home键,手机Home键在哪里?手机Home键是什么意思?
- c语言char储存字符串,在c语言中char型数据在内存中的储存形式为什么
- C# 获取 ARP 映射
- 简单理解什么叫联邦学习(全)
- Vue中error ‘XXXXX‘ is not defined no-undef解决办法
- burntest Linux参数,限拷机软件IntelBurnTest 2.0
- html页面显示代码插件,jQuery – 高亮动态显示页面HTML代码插件