专栏首页小一的学习笔记Python入门进阶教程-邮件发送

Python入门进阶教程-邮件发送

作者:一叶

介绍:放不下灵魂的搬砖者

全文共1477字,阅读全文需7分钟

Python版本3.8.0,开发工具:Pycharm

首先需要了解 Python 的 smtplib 提供了一种很方便的途径发送电子邮件,它对 smtp 协议进行了简单的封装。

那什么是 smtp 协议呢? SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

01

发送邮件方法介绍

Python创建 SMTP 对象

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如:runoob.com,这个是可选参数。 port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下SMTP端口号为25。 local_hostname: 如果SMTP在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP 对象使用 sendmail 方法发送邮件

参数说明:

from_addr: 邮件发送者地址。 to_addrs: 字符串列表,邮件发送地址。 msg: 发送消息

02

发送邮件实例

设置发件人信息

# 发件人邮箱
username = "xxxxxxx@qq.com"
# QQ邮箱授权码
password = "xxxxxxxxx"

设置收件人信息

# 可设置多个收件人邮箱
receivers = ['xxxxxxx@qq.com', 'yyyyyyy@qq.com']

# 设置抄送人信息,可多个,逗号分隔
cc = ['zzzzzzzz@qq.com']

设置发送内容,标题+内容+附件等

# 设置标题
subject = "我是邮箱标题"
# 设置内容
content = "我是邮箱内容"
# 创建MIMEMultipart对象,并封装相应的数据
message = MIMEMultipart()
# 封装标题
message['Subject'] = Header(subject, 'gbk')
# 封装发件人标识
message['From'] = "每日推送"
# 封装收件人和抄送人
message['to'] = Header(",".join(receivers))
message['Cc'] = Header(",".join(cc))
# 生成邮件正文,可以是html
msgText = MIMEText(content, "plain", "utf-8")
# 封装邮件正文
message.attach(msgText)

创建实例,发送邮件

# 设置smtp的相关参数
smtp_server = 'smtp.qq.com'
smtp_port = 25
smtp = smtplib.SMTP(smtp_server, smtp_port)

# 登录
smtp.login(username, password)
# 发送邮件
smtp.sendmail(username, receivers+cc, message.as_string())
smtp.quit()

其他功能

邮件正文应用html

# 更改content内容格式为html 
send_text = MIMEText(content, "html", "utf-8")


# 邮件正文html模板
content = """
<html>
<h1>html测试:</h1>
<p>测试1</p>
<a href="https://www.hao123.com/">hao123</a>
<br>
<a href="https://www.baidu.com/?tn=sitehao123">baidu</a>
<br>
<p><img src="cid:image" alt="图片" width="100" height="100"></a></p>
<br>
<a href="#">图片介绍</a>
</html>
"""

邮件正文中添加图片

# 读取文件并创建MIMEImage
fp = open(file_path, 'rb')
msgImage = MIMEImage(fp.read())
fp.close()
# 定义图片 ID,在 HTML 文本中引用
msgImage.add_header('Content-ID', '<image>')
message.attach(msgImage)

邮件正文中添加附件

# 读取csv文件作为附件
send_file_path = "xxxxxx"
# 发送附件
addfile = MIMEText(open(send_file_path, 'rb').read(), 'base64', 'gbk')
addfile['Content-Type'] = 'application/octet-stream'
addfile.add_header('Content-Disposition', 'attachment', filename='文件名称.csv')
message.attach(addfile)

03

实现及源代码获取

1. 带附件邮件发送成功截图

后台回复:邮件附件获取源代码

2. 带html 格式邮件发送成功截图

后台回复:邮件html 获取源代码


发送邮件的用处还是挺大的,当你的自动运行脚本写好后,可以设置发送处理结果到你的邮箱中,或者直接通过邮箱发给其他同事,省时省力,建议掌握。

Python系列

Python系列会持续更新,从基础入门到进阶技巧,从编程语法到项目实战。若您在阅读的过程中发现文章存在错误,烦请指正,非常感谢;若您在阅读的过程中能有所收获,欢迎一起分享交流。

如果你也想和我一起学习Python,关注我吧!

学习Python,我们不只是说说而已

End

本文分享自微信公众号 - 知秋小梦(little_dream_2019),作者:一叶

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-12-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小白学爬虫系列-基础-requests详解

    通过requests 的 get 方法获取豆瓣电影TOP 250 的响应内容,包括状态码、编码、cookie等

    小一不二三
  • Python入门进阶教程-数据库操作

    MySQL 是最流行的关系型数据库管理系统。本小节通过 Python 对 MySQL 数据库进行增删改查操作,后期高阶可以通过结合 DataFrame 对文件实...

    小一不二三
  • ​Python入门基础教程-运算符

    Python运算符主要分为算术运算符、比较(关系)运算符、赋值运算符、逻辑运算符、成员运算符、身份运算符、位运算符

    小一不二三
  • python模块:smtplib模块

    格式(1):smtpObj=smtplib.SMTP([host [,port [,local_hostname]]])

    py3study
  • JS来一个极简的每日毒鸡汤

    最近发现了基于node的一个发送邮件的小插件,逛论坛看别人用它做了一些有意思的东西,也模仿着搞一个分享下~ 重在分享,重在分享!

    流眸
  • 设计模式实战 - 原型模式

    ● 个性化服务 一般银行都要求个性化服务,发过去的邮件上总有一些个人信息吧,比如“××先生”,“××女士”等 ● 递送成功率 邮件的递送成功率有一定的要求...

    公众号-JavaEdge
  • 一起来学matlab-matlab学习笔记8 基本绘图命令_1 图形窗口简介

    本文为matlab自学笔记的一部分,之所以学习matlab是因为其真的是人工智能无论是神经网络还是智能计算中日常使用的,非常重要的软件。也许最近其带来的一...

    DrawSky
  • Hybird App之选择器详解(二)

    Dwyane
  • 爬取网站文章将图片保存到本地并将HTML的src属性更改到本地

    每次当你爬取一篇文章时,不管是从csdn或者其他网站,基本内容都是保存在一个富文本编辑器中,将内容提取出来还是一个html,保存之后图片还在别人...

    andrew_a
  • Python接口自动化-Pytest-Html

    小编在搭建组内接口自动化框架过程中使用过两个HTML报告框架,Pytest-HTML和Allure,本文主要介绍下Pytest-HTML。

    软测小生

扫码关注云+社区

领取腾讯云代金券