学习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)相关推荐

  1. python积分管理系统_python实现每天自动签到领积分的示例代码

    自动签到的python脚本源码 新建一个python文件,checkin.py,保存到电脑上某个位置,我这里保存到的是E:\pyproject\checkin.py # 引入3个包 from sele ...

  2. 在linux下python爬虫进程发生异常时自动重启直至正常结束的方法

    在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 参考文章: (1)在linux下python爬虫进程发生异常时自动重启直至正常结束的方法 (2)https://www.cnbl ...

  3. python股票自动交易从零开始-python程序化交易编程-python制作自动交易程序!

    如何用python进行期货程序化交易 .程序化交易系统目前主要是通过计算机程序实现的,其实就是把交易者决策的过程用计算机语言描述出来,然后由计算机给出交易建议或直接发送交易指令到期货公司的. SDYG ...

  4. 怎样在python代码中输入π_鼠标自动点击、键盘自动输入?几行Python代码搞定

    相信我,你以后一定会用到.实在不行,你先收藏,做个收藏家,等拿出来,就值钱了. 第一步:安装并导入相关模块 只需要安装PyUserInput,如下: pip install PyUserInput 如 ...

  5. 2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件

    Python TimedRotatingFileHandler 修改suffix后无法自动删除文件 TimedRotatingFileHandler 用法 "S": Seconds ...

  6. 电脑重启后python导入的库不见_为什么python不会在启动时自动导入每个模块?

    我正在玩Python 2.7,每个人都知道,在每个程序的开头,你总是需要导入模块.例如:import random import time for x in range(1, 300): print ...

  7. pythoncookie自动模拟登录_用Python模拟技巧带你实现自动抽屉登录自动点赞

    原标题:用Python模拟技巧带你实现自动抽屉登录&自动点赞 /1 前言/ 嘿,各位小伙伴们晚上好呀,今天小编又给大家带来干货内容啦,今天带来的是,如何自动登录抽屉,并且点赞! 原计划是不打算 ...

  8. python自动备份手机_python实现自动备份windows应用数据

    开发这个功能主要是刚开始要备份几台windows服务器的用户数据,后来写到最后就变成了一个数据备份通用工具了,程序可以根据配置文件的配置进行目录数据的备份,只要指定备份的目录,程序会自动调用系统win ...

  9. 技术要点|Python监控学生端电脑屏幕自动识别学习状态

    技术要点: 1)使用pillow扩展库进行屏幕截图: 2)使用多线程监听学生端连接: 3)使用TCP协议传输屏幕图像: 4)使用标准库zlib进行数据压缩: 5)使用OCR提取屏幕截图中的文字. 具体 ...

最新文章

  1. 【Netty】Netty解决粘包和拆包问题的四种方案
  2. UI+Class Object
  3. SAP CRM WebClient UI data loss设计原理
  4. python基础03——数据类型string
  5. 疑似三星Galaxy S11入网:搭载骁龙865处理器+支持25W快充
  6. Git命令行介绍和使用说明(持续更新)
  7. 二分法之旋转有序数组
  8. [导入]Nebula3学习笔记(3): Core Namespace
  9. python基础知识——函数(中)
  10. Intel i5-7200U (3100MHZ),1*8GB(DDR3 1600) 在 Aida64 V5.97.4600 的测试结果
  11. c语言电脑蓝屏代码,电脑蓝屏代码0x0000001a的解决方法
  12. 区块链掀起的认知革命!|筱静观察
  13. 做人10大心机:不能太单纯 适度伪装自己
  14. android手机home键,手机Home键在哪里?手机Home键是什么意思?
  15. c语言char储存字符串,在c语言中char型数据在内存中的储存形式为什么
  16. C# 获取 ARP 映射
  17. 简单理解什么叫联邦学习(全)
  18. Vue中error ‘XXXXX‘ is not defined no-undef解决办法
  19. burntest Linux参数,限拷机软件IntelBurnTest 2.0
  20. html页面显示代码插件,jQuery – 高亮动态显示页面HTML代码插件

热门文章

  1. Python 简介及开发环境搭建
  2. matlab实现GPC隐写算法,基于LSB信息隐藏算法的MATLAB实现
  3. 妹子说我没有表情包?没关系通过python爬虫爬取表情
  4. linux挂载硬盘错误,开机后无法进入系统
  5. 5款神级软件,装机必备,不看后悔
  6. 2014 c语言程序设计形成性考核册,C语言程序设计形成性考核册参考答案
  7. GenBank序列名称解析
  8. 艺术遇上AI,yuma kishi的工科浪漫 | 设计黑客
  9. linux 进入recovery模式,ubuntu进入recovery mode模式 – 运维那些事
  10. Leetcode Proble 汇总四