用python发邮件

  • 1.用python发邮件
  • 2.模块:
  • 3.目标拆解:
    • 3.1 版本1.0:给自己发送一句简单的话。
    • 3.2 版本2.0:在版本1.0的基础上,增添邮件头(收发人和邮件标题)。

1.用python发邮件

今天带大家学习如何用python发送邮件,

2.模块:

利用python发送邮件我们需要用到两个python的内置模块,smtplibemail,其中smtplib模块负责发送邮件,而email模块负责构造邮件内容。

我们总结一下;

import smtplibserver = smtplib.SMTP()
server.connect(host,port)
server.login(uer_name,password)
server.send_mail(from_addrs,to_addr,msg.as_string())
server.quit()

第一行,是引入smtplib模块。

第三行,server是一个变量,smtplib.SMTP()是变量server的值。SMTP(Simple Mail Transfer Protocol)翻译过来是“简单邮件传输协议”的意思,SMTP 协议是由源服务器到目的地服务器传送邮件的一组规则。(可以简单理解为:我们需要通过SMTP指定一个服务器,这样才能把邮件送到另一个服务器。)

第四行代码
连接(connect)指定的服务器。
host是指定连接的邮箱服务器,你可以指定服务器的域名。通过搜索“xx邮箱服务器地址”,就可以找到。

port 是“端口”的意思。端口属于计算机网络知识里的内容,这里不详细讲。
我们需要指定SMTP服务使用的端口号,一般情况下SMTP默认端口号为25,如果25行不通,你可以通过搜索或者去邮箱设置里面查看端口。当然也可以在网上搜一下。

提醒!QQ 邮箱一般默认关闭SMTP服务,我们得先去开启它。请打开https://mail.qq.com/,登录你的邮箱。然后点击位于顶部的【设置】按钮,选择【账户设置】,然后下拉到这个位置。

就像上面的一样,把第一项服务打开。需要用密保手机发送短信,完成之后,QQ 邮箱会提供给你一个授权码,授权码的意思是,你可以不用QQ的网页邮箱或者邮箱客户端来登录,而是用邮箱账号+授权码获取邮箱服务器的内容。

第五行代码,
login是登录的意思,也就是登录你指定的服务器用的,需要输入两个参数:登录邮箱和授权码。

第六行代码,
是发送邮件用的,sendmail()方法需要三个参数:发件人,收件人和邮件内容
这里的发件人from_addr与上面的username是一样的,都是你的登录邮箱,
msg.as_string()是一个字符串类型:as_string()是将发送的信息msg变为字符串类型。

email 模块:也就是用来写邮件内容的模块。这个内容可以是纯文本、HTML内容、图片、附件等多种形式。

from email.mime.text import MIMEText  #纯文本,HTML
from email.mime.image import MIMEImage #图片
from email.mime.multipart import MIMEMultipart #多种组合内容

email模块这里我们不过多讲解,可以自行查阅相关文档,

好了,我们已经把smtplib这个模块讲完了,下面我们就要开始写代码了,

3.目标拆解:

3.1 版本1.0:给自己发送一句简单的话。


import smtplib# 发信方的信息:发信邮箱,QQ邮箱授权码
from_addr = 'xxx@qq.com'
password = '你的授权码数字'# 收信方邮箱
to_addr = 'xxx@qq.com'# 发信服务器
smtp_server = 'smtp.qq.com'server = smtplib.SMTP_SSL()
server.connect(smtp_server,465)server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()

下面是完整代码,

# smtplib 用于邮件的发信动作
import smtplib
# email 用于构建邮件内容
from email.mime.text import MIMEText# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxx@qq.com'
password = '你的授权码数字'# 收信方邮箱
to_addr = 'xxx@qq.com'# 发信服务器
smtp_server = 'smtp.qq.com'# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('my first email send by python','plain','utf-8')server = smtplib.SMTP_SSL(smtp_server)
server.connect(smtp_server,465)server.login(from_addr, password)server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()

现在你应该可以收到信件了,他大概是这个样子

3.2 版本2.0:在版本1.0的基础上,增添邮件头(收发人和邮件标题)。

邮件头(header)是这一块区域,包括主题、发件人、收件人等信息:

from email.header import Headermsg['From'] = Header('张三')
msg['To'] = Header('不练剑的游侠')
msg['Subject'] = Header('python test')

第一行代码,从email包引入Header()方法。Header()是用来构建邮件头的。

标准邮件需要三个头部信息:From , To 和 Subject ,第三到五行代码就提供了这三个信息。

这里我们可以自定义,比如发件人邮箱地址,收件人邮箱地址,主题“python test”。

# smtplib 用于邮件的发信动作
import smtplib
# email 用于构建邮件内容
from email.mime.text import MIMEText
#构建邮件头
from email.header import Header# 发信方的信息:发信邮箱,QQ 邮箱授权码
from_addr = 'xxx@qq.com'
password = '你的授权码数字'# 收信方邮箱
to_addr = 'xxx@qq.com'# 发信服务器
smtp_server = 'smtp.qq.com'# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('my first email send by python','plain','utf-8')
msg['From'] = Header(张三)
msg['To'] = Header(不练剑的游侠)
msg['Subject'] = Header('python test')server = smtplib.SMTP_SSL(smtp_server)
server.connect(smtp_server,465)server.login(from_addr, password)server.sendmail(from_addr, to_addr, msg.as_string())
# 关闭服务器
server.quit()

这就是加了邮件头的效果

手把手教你用python发送邮件相关推荐

  1. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  2. python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码

    原标题:手把手教你使用Python实战反欺诈模型|原理+代码 作者 | 萝卜 来源 | 早起Python(ID: zaoqi-python) 本文将基于不平衡数据,使用Python进行 反欺诈模型数据 ...

  3. 手把手教你用Python构建自己的「王二狗」

    题图 | 智能二狗聊天机器人 导读 在人手N部智能手机的时代,我们对聊天机器人早已不陌生.这两年很火的游戏群聊天机器人「王二狗」更是用它的机智幽默征服了很多人. 今天,我们将手把手教你用Python从 ...

  4. python global用法_14_手把手教你学Python之函数(下)

    变量作用域:根据变量定义的位置,可将变量分为全局变量和局部变量. 全局变量:定义在函数外面的变量,可以在多个函数中进行访问,但不能执行赋值操作.如果有赋值语句,相当于创建了一个同名的局部变量: 局部变 ...

  5. python编程例子 输入 输出-推荐 :手把手教你用Python创建简单的神经网络(附代码)...

    原标题:推荐 :手把手教你用Python创建简单的神经网络(附代码) 作者:Michael J.Garbade:翻译:陈之炎:校对:丁楠雅 本文共2000字,9分钟. 本文将为你演示如何创建一个神经网 ...

  6. python界面设计-手把手教你用Python设计一个简单的命令行界面

    原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...

  7. python代码示例图形-纯干货:手把手教你用Python做数据可视化(附代码)

    原标题:纯干货:手把手教你用Python做数据可视化(附代码) 导读:制作提供信息的可视化(有时称为绘图)是数据分析中的最重要任务之一.可视化可能是探索过程的一部分,例如,帮助识别异常值或所需的数据转 ...

  8. python正确的输入语句_手把手教你在python中如何使用while True语句

    在学习过程中,经常能遇到采用while True的用法.下面以一个例子进行说明: 建立一个用户登录系统,用户输入用户名和密码,如果正确就可以进入系统. 1.我自己最开始的写法:d = {} #数据库字 ...

  9. garch预测 python_【2019年度合辑】手把手教你用Python做股票量化分析

    引言 不知不觉,2019年已接近尾声,Python金融量化公众号也有一年零两个月.公众号自设立以来,专注于分享Python在金融量化领域的应用,发布了四十余篇原创文章,超过两万人关注.这一路走来,有过 ...

最新文章

  1. 详细记录python的range()函数用法
  2. python requests
  3. 刘邦韩信java_刘邦为啥非要杀韩信,800多年后李世民给出了答案,原来如此
  4. 通过iframe引入另外一个项目中的html片段到项目中,解决样式,高度,兼容等问题的策略
  5. Java引用类型变量如何分配内存空间?
  6. 如何准备机器学习工程师面试
  7. java使用SAX接口解析xml文件
  8. ae插件form_学习人数最多的课程 (推荐)AE+PR特效剪辑全能精英班
  9. 测试手机烧屏的软件,还能修手机烧屏?安卓手机屏幕测试神器
  10. java se 64位_【JavaSERuntime(jre864位版)免费版下载】Java SE Runtime(jre8 64位版) 8.0-ZOL软件下载...
  11. android:persistent属性研究
  12. 游戏开发入门系列(目录)
  13. 项目经理如何激励自己的团队
  14. 2021-03-21
  15. R语言实战应用精讲50篇(十二)-正态分布与方差齐性的检验方法与SPSS操作
  16. 多肉淘宝养成记(含治疗玻璃心)
  17. windows远程桌面自动登录
  18. 巨星陨落!哈尔滨工业大学讣告
  19. pytorch runtime error(59):device-side assert triggered at XXX
  20. 从了解Linux开始

热门文章

  1. 什么时候使用resulttype_什么情况下用resultType和 resultMap
  2. Ins风韩国美少女【InsCode Stable Diffusion美图活动一期】
  3. 数据库拼接字符串mysql_[数据库]Mysql之字段字符串拼接
  4. 卷积神经网络CNN图解
  5. python周末_使用python时如何考虑周末和节假日
  6. @overload与@override
  7. C# mysql DBHelper
  8. java获取中国时间代码(适用全球任意机器)
  9. 【WebRTC】QoS 拥塞控制 GCC 理论 Sender Side BWE 或 REMB
  10. uni-app(一)----引入阿里云矢量图标库