Python 发送邮件

课程推荐:Python开发工程师--学习猿地--送9个上线商业项目

Python 原生
import smtplib
from email.message import EmailMessage

发送文本

with open('test') as fp:

# 创建一条 text/plain 信息
msg = EmailMessage()
msg.set_content(fp.read())

发送 html

msg.add_alternative('

Hello

', subtype='html')

msg['Subject'] = '标题'
msg['From'] = '发送方邮件地址'
msg['To'] = '接受方邮件地址'

通过 ssl 加密方式发送

with smtplib.SMTP_SSL('smtp服务器地址', 465) as s:
s.login('发送方邮件地址', '发送方邮件密码或授权码')
s.send_message(msg)

-----------------------------------------------------------

通过 tls 加密方式发送

with smtplib.SMTP('smtp服务器地址', 587) as s:

s.starttls()
s.login('发送方邮件地址', '发送方邮件密码或授权码') 
s.send_message(msg)

Flask-mail
from flask import Flask
from flask_mail import Mail, Message

app = Flask(name)

app.config.update(
MAIL_SERVER = os.getenv('MAIL_SERVER'),
MAIL_PORT = 465,
MAIL_USE_SSL = True,
MAIL_USERNAME = os.getenv('MAIL_USERNAME'),
MAIL_PASSWORD = os.getenv('MAIL_PASSWORD'),
MAIL_DEFAULT_SENDER=('发送人', os.getenv('MAIL_USERNAME'))
)

mail = Mail(app)

def send_mail(subject, to, body, html=None):
message = Message(subject, recipients=[to], body=body, html=html)
mail.send(message)

————————————————
原文作者:Exception_oY
转自链接:https://learnku.com/articles/23984
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

Image placeholder
且行且珍惜
未设置
  0人点赞

没有讨论,发表一下自己的看法吧

推荐文章
Python 教程-了解Python

什么是Python Python能干什么? 有什么特点? 什么是Python 官方介绍: Python是一个易于学习、功能强大的编程语言。它拥有高效高级的数据结构和一种简单有效的面向对象编程的

Python 教程-Python 安装

在Windows上安装 访问https://www.python.org/downloads/并下载最新版本。在撰写时当前最新是3.8。在安装的时候和其他软件一样,无脑式下一步。需要注意的是如果在W

Python入门教程_2. 使用 Python 解释器

2.1.调用解释器 Python解释器通常安装在目标机器上的/usr/local/bin/python3.7目录下;把/usr/local/bin目录放进你的Unixshell的搜索路径里,确保它可以

Python入门教程_3. Python 简介

在下面的例子中,输入和输出分别由大于号和句号提示符(>>>和...)标注:如果想重现这些例子,就要在解释器的提示符后,输入(提示符后面的)那些不包含提示符的代码行。需要注意的是在练习中遇到的从属提示符

Python入门教程_4. 深入 Python 流程控制

除了刚刚介绍的while语句,Python还有一些在其他语言中常见的控制流语句,并做了一些改动。 4.1.if语句 也许最著名的语句是if语句了。 例如: >>>x=int(input("Please

【python测试开发栈】帮你总结python random模块高频使用方法

随机数据在平时写python脚本时会经常被用到,比如随机生成0和1来控制逻辑、或者从列表中随机选择一个元素(其实抽奖程序也类似,就是从公司所有人中随机选择中奖用户)等等。这篇文章,就帮大家整理在pyt

流畅的Python读书笔记 --- 第一章 Python数据模型

近期开始读“流畅的Python”这本书,想把自己的读书笔记分享给大家,希望能帮到也对这本书感兴趣但是没时间看的各位。(文章中大部分的话和图片摘录总结自“流畅的Python”一书,以及python官方网

【python测试开发栈】帮你总结python time模块高频使用方法

在平时写python脚本时,时间是我们经常用到的数据,比如:时间戳、前端展示的对应格式的时间等,在python中主要有三个和时间处理相关的模块:time、datetime、calendar,这篇文章主

【Python 1-5】Python教程之——字符串

课程推荐:Python开发工程师--学习猿地--送9个上线商业项目 字符串字符串就是一系列字符。在Python中,用引号括起的都是字符串,其中的引号可以是单引号,也可以是双引号,如下所示:"Thisi

漫谈:Java和Python现在都挺火,我应该怎么选?Java和Python优缺点比较。

课程推荐:Java开发工程师--学习猿地精品课程课程推荐:Python开发工程师--学习猿地精品课程 声明:这是一篇容易引起撕逼的文章,为了祖国和谐,人民安康,请各位看官尽量理性讨论。同时,这篇文章是

python自动化测试学习 - Pytest插件之selenium

推荐课程《Python开发工程师--学习猿地精品在线课》今天主要演示Pytest框架的selenium插件。webdriver是主流的UI自动化测试框架,在Pytest的测试框架中也提供了对webdr

Python中的openpyxl如何对excel修改文件

推荐课程:Python开发工程师--学习猿地--送9个上线商业项目 Python安装openpyxl 首先我们应该配置pip详细配置教程地址:https://blog.csdn.net/hanhanw

使用Python批量重命名iPhone拍摄的照片-按照拍摄时间重命名

课程推荐:Python开发工程师--学习猿地--送9个上线商业项目 #!/usr/bin/envpython --coding:utf-8-- '''批量修改照片文件名称的Python脚本程序。遍历指

超8千Star,火遍Github的Python反直觉案例集!

大数据文摘授权转载作者:SatwikKansal译者:暮晨Python,是一个设计优美的解释型高级语言,它提供了很多能让程序员感到舒适的功能特性。但有的时候,Python的一些输出结果对于初学者来说似

面向回家编程!GitHub标星两万的”Python抢票教程”,我们先帮你跑了一遍

盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票。据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%。达到4.4亿人次,2020年铁路春运自1月10日开始,

GitHub上十大很火的Python项目,最后一个竟然是它!

课程推荐:Python开发工程师--学习猿地--送9个上线商业项目 作为程序开发人员,GitHub是大家平时必逛的网站,GitHub作为目前全球比较大的男性同性交友平台,上面存在着太多太多的宝藏程序。

Laravel 第八章学习——邮件发送

账户激活一、如果我们需要在模型被创建之前进行一些设置,则可以通过监听 creating 方法来做到。该方法是由Eloquent模型触发的一个事件。事件是Laravel提供一种简单的监听器实现,我们可以

Python 多个return值

多个return值 那如果你想从一个函数里返回两个变量而不是一个呢?新手们有若干种方法。最著名的方法,是使用global关键字。让我们看下这个没用的例子: defprofile(): globalna

python 处理多个异常

处理多个异常 我们可以使用三种方法来处理多个异常。 第一种方法需要把所有可能发生的异常放到一个元组里。像这样: try: file=open('test.txt','rb') except(IOErr

python *args 的用法

*args的用法 *args和**kwargs主要用于函数定义。你可以将不定数量的参数传递给一个函数。 这里的不定的意思是:预先并不知道,函数使用者会传递多少个参数给你,所以在这个场景下使用这两个关键

python **kwargs 的用法

**kwargs的用法 **kwargs允许你将不定长度的键值对,作为参数传递给一个函数。如果你想要在一个函数里处理带名字的参数,你应该使用**kwargs。 这里有个让你上手的例子: defgree

Python 使用 CTypes调用 C 方法

CTypes Python中的ctypes模块可能是Python调用C方法中最简单的一种。ctypes模块提供了和C语言兼容的数据类型和函数来加载dll文件,因此在调用时不需对源文件做任何的修改。也正

Python/C API

Python/CAPI Python/CAPI可能是被最广泛使用的方法。它不仅简单,而且可以在C代码中操作你的Python对象。 这种方法需要以特定的方式来编写C代码以供Python去调用它。所有的P

SWIG-Python中调用C代码的另一种方法

SWIG SWIG是SimplifiedWrapperandInterfaceGenerator的缩写。是Python中调用C代码的另一种方法。在这个方法中,开发人员必须编写一个额外的接口文件来作为S

Python 容器 Collections

容器(Collections) Python附带一个模块,它包含许多容器数据类型,名字叫作collections。我们将讨论它的作用和用法。 我们将讨论的是: defaultdict counter