Python操作邮箱发送邮件(网易邮箱)

2023-05-16

以网易邮箱为例:

准备工作:

1)首先进入网页版网易邮箱,点击设置

2)点击,POP3/SMTP/IMAP

3)开启  IMAP/SMTP服务 和 POP3/SMTP服务  并且记住授权码(一定要记住只会出现一次)

1.发送纯文本邮件

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage

EMAIL_ADDRESS = "自己的邮箱账号"     # 邮箱的地址
EMAIL_PASSWORD = "自己的授权码"     # 授权码

# 连接到smtp服务器
# smtp = smtplib.SMTP('smtp.163.com', 25)     # 未加密

# 也可以使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()


'''
# 为了防止信息在网络传输中泄漏,最好对信息进行加密
smtp = smtplib.SMTP_SSL("smtp.163.com", 465, context=context)       # 完成加密通讯

# 连接成功后使用login方法登录自己的邮箱
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)

# 一、使用 sendmail 方法实现发送邮件信息
sender = EMAIL_ADDRESS      # 用来发送的邮箱地址
receive = ""        # 目标邮箱地址
subject = "邮件标题内容"
body = "邮件主体内容"
msg = f"Subject: {subject}\n\n{body}"
smtp.sendmail(sender, receive, msg)


# 发送完毕后使用 quit 方法关闭连接
smtp.quit()
'''

subject = "邮件标题内容"
body = "邮件主体内容"

msg = EmailMessage()
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = "目标邮箱账号"                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容

# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯

    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)

    '''
    # 方式一:
    # 使用 sendmail 方法实现发送邮件信息
    sender = EMAIL_ADDRESS      # 邮件发件人
    receive = EMAIL_ADDRESS       # 邮件收件人
    subject = "subject"
    body = "body"
    msg = f"Subject: {subject}\n\n{body}"
    print("正在发送。。。。。。。。。。。。。。。。。。")
    smtp.sendmail(sender, receive, msg)
    print("发送成功。。。。。。。。。。。。。。。。。。")
    '''

    # 方式二:使用send_message方法发送邮件信息
    smtp.send_message(msg)



2.发送带有HTML的邮件

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage

EMAIL_ADDRESS = "自己的邮箱账号"     # 邮箱的地址
EMAIL_PASSWORD = "自己的授权吗"     # 授权码

# 使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()


subject = "邮件标题内容"
body = "邮件主体内容"
msg = EmailMessage()
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = "目标邮箱账号"                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容

# 要想为邮件添加HTML内容,使用add_alternative()方法实现,注意要放在set_context之后
HTML = """\
<!doctype html>
<html lang="zh-cn">
<head>
    <meta charset="utf-8">
    <title>消失在宇宙星空中的404页面</title>
    <link href="{{ url_for('static',filename='404/404.css') }}" rel="stylesheet" type="text/css">
</head>
<body>
<p>HTML</p>
</div>
</body>
</html>
"""
msg.add_alternative(HTML, subtype='html')

# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯

    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    # 使用send_message方法发送邮件信息
    smtp.send_message(msg)

3.发送带有附件的邮件

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage

EMAIL_ADDRESS = "自己的邮箱账号"     # 邮箱的地址
EMAIL_PASSWORD = "自己的授权码"     # 授权码

# 使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()


subject = "邮件标题内容"
body = "邮件主体内容"
msg = EmailMessage()
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = "目标邮箱账号"                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容

# 要想为邮件添加附件内容首先要读入文件的二进制内容
filename = '要附带的文件地址'
with open(filename,'rb') as f:
    filedata = f.read()

# 使用add_attachment方法添加附件的数据
msg.add_attachment(filedata, maintype='', subtype='', filename=filename)    # filedata:文件数据;maintype文件类型;subtype文件后缀名;filename:文件名

# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯

    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    # 使用send_message方法发送邮件信息
    smtp.send_message(msg)

4.向多人发送邮件

# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage

EMAIL_ADDRESS = "自己的邮箱地址"     # 邮箱的地址
EMAIL_PASSWORD = "自己的授权码"     # 授权码

# 使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()

'''
# 方法一:在msg的To部分设置多个email目标地址,使用列表存储这多个email地址,这会向多个用户发送相同的内容
subject = "邮件标题内容"
body = "邮件主体内容"
msg = EmailMessage()
msg['subject'] = subject        # 邮件标题
msg['From'] = EMAIL_ADDRESS     # 邮件发件人
msg['To'] = ['a.@qq.com', 'b@qq.com', 'c@qq.com']                  # 邮件的收件人
msg.set_content(body)           # 使用set_content()方法设置邮件的主体内容

# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯

    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    # 使用send_message方法发送邮件信息
    smtp.send_message(msg)
'''

# 方法二:向不同的用户发送不同的内容
# 建立一个列表来存储目标邮箱地址
contacts = ['a.@qq.com', 'b@qq.com', 'c@qq.com']
# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp:      # 完成加密通讯
    # 连接成功后使用login方法登录自己的邮箱
    smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
    for contact in contacts:
        subject = "邮件标题内容"
        body = f"{contact}邮件主体内容"
        msg = EmailMessage()
        msg['subject'] = subject  # 邮件标题
        msg['From'] = EMAIL_ADDRESS  # 邮件发件人
        msg['To'] = contact  # 邮件的收件人
        msg.set_content(body)  # 使用set_content()方法设置邮件的主体内容
        # 使用send_message方法发送邮件信息
        smtp.send_message(msg)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python操作邮箱发送邮件(网易邮箱) 的相关文章

  • 好用的跨平台开源截图工具推荐--flameshot

    flameshot 简介 flameshot 是一款跨平台的截图工具 图标 配置文件路经 linux config flameshot flameshot ini windows C Users YOURNAME AppData Roami
  • C语言 该日是该年的第几天(考虑闰年)

    给出日期 xff08 年月日 xff09 xff0c 计算该日是该年的第几天 xff08 需考虑是否是闰年 xff09 文章目录 前言一 逻辑演示部分 xff08 判断闰年 xff09 二 代码部分 1 代码示例2 输出演示总结 一 判断是
  • manila,barbican,cloudkitty服务的基本使用

    目录 Manila服务安装与使用Barbican服务安装与使用Cloudkitty服务安装与使用 Manila服务安装与使用 安装服务后创建default share type共享类型 不使用驱动程序支持 接着创建一个大小为2G的共享存储名
  • OpenCV计算机视觉(四) —— 图像的阈值处理与自适应阈值Otsu

    阈值处理是指剔除图像内像素高于阈值或者低于阈值的像素点 图像的阈值处理主要是设置一个阈值 xff1a 大于这个数赋予一个值 xff0c 小于一个数赋予另一个值 xff0c 将图片的像素值变成两个灰度值数中间的一个 xff0c 实现图像的分割
  • 基于C++ 的ASK数字通信系统仿真

    首先指明 xff1a 这是我大三时的一个课程设计 xff0c 希望对你有一定的指导意义 一 数字通信系统 在本次数字通信系统仿真中需要的课程基础主要有 xff1a 通信原理 xff0c 数字信号处理 xff0c C 43 43 语言程序设计
  • Hadoop集群配置

    伪分布集群安装 配置环境 linux系统 xff1a Centos7 虚拟机 xff1a VMware Workstation 16 Pro 一台Linux机器 xff0c 也可以称为是一个节点 xff0c 上面安装的有JDK环境 最上面的
  • 基本选择器

    jQuery基本选择器 span class token operator lt span script type span class token operator 61 span span class token string 34 t
  • 更改Windows的鼠标滚动方式为Mac方式(win鼠标滚轮反向)

    更改Windows的鼠标滚动方式为Mac方式 xff08 win鼠标滚轮反向 xff09 将Windows的滚动方向更改成和Mac一致的 自然 滚动 用习惯Mac系统偶尔用Windows xff0c 或者在Mac和Win之间倒腾来倒腾去的同
  • Java面试题

    Java面试题 并发面试题 集合面试题 一 Java基础 1 JDK和JRE有什么区别 JDK xff1a Java Development Kit 的简称 xff0c java 开发工具包 xff0c 提供了 java 的开发环境和运行环
  • VM虚拟机使用(文末有系统镜像)

    目录 前言 1 创建虚拟机 2 分盘操作 3 安装系统 4 备份 前言 本篇文章笔者详细述说了虚拟机的使用 xff0c 安装的是xp系统 xff0c 文末链接里面有xp与win7的系统镜像 若有问题 xff0c 希望大家斧正 xff08 手
  • linux必知必会-du命令

    du命令 du命令简介 du命令是linux系统里的文件大小查看的命令 du命令的应用场景十分广泛 xff1a 需要查看单个目录里面多个文件总大小 需要查看目录中每个文件的大小以及每个子文件夹中文件的大小 查看日志文件的大小 查看文件大小并
  • 解决在Ubuntu中设置了共享文件却找不到的原因

    可以看到我们在进入共享文件夹的时候 xff0c 并没有找到我们想要的文件 但文件夹里面是实实在在有文件的 解决方法 sudo vmhgfs fuse host mnt hgfs o nonempty o allow other 这个解决方法
  • python斐波那契数列

    基础python题 斐波那契数列 斐波那契数列指的是这样一个数列 xff1a 0 xff0c 1 1 xff0c 2 3 xff0c 5 8 xff0c 13 21 34 55 89 144 233 377 610 987 1597 题目分
  • python经典猴子偷桃

    猴子偷桃 题目 猴子吃桃问题 xff1a 猴子第一天摘下若干个桃子 xff0c 当即吃了一半 xff0c 还不瘾 xff0c 又多吃了一个第二天早上又将剩下的桃子吃掉一半 xff0c 又多吃了一个 以后每天早上都吃了前一天剩下的一半零一个
  • python分解质因数

    分解质因数 题目 题目 将一个整数分解质因数 例如 xff1a 输入90 打印出90 61 233 5 程序分析 根本不需要判断是否是质数 xff0c 从2开始向数本身遍历 xff0c 能整除的肯定是最小的质数 代码如下 target sp
  • C语言学习笔记——数组

    数组 eg xff1a 使用数组保存数据 使用数组保存用户输入的数据 当输入完毕后逆向输出数据 span class token macro property span class token directive keyword inclu
  • c语言基础——一维数组的应用

    C语言基础 一维数组的应用 例如 在一个学校的班级中会有很多学生 此时就可以使用数组来保存这些学生的姓名 以便进行管理 eg xff1a 用数组保存学生姓名 本示例每一个元素都应该是可以保存字符串的类型 这里使用字符指针类型 span cl
  • c-起泡法

    起泡法 这个算法的名字由来是因为越小的元素会经由交换慢慢 浮 到数列的顶端 xff08 升序或降序排列 xff09 xff0c 就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样 xff0c 故名 冒泡排序 比较相邻的元素 如果第一个比第二
  • c++字符串连接

    编写一个程序 xff0c 将两个字符串连接起来 xff0c 结果取代第一个字符串 要求用string方法 int main int a b cin gt gt a gt gt b sort a b cout lt lt a lt lt 34
  • 用new调用函数的四步走

    JS规定 xff0c 使用new调用函数会进行四步走 xff1a 1 函数体内会自动创建出一个空白对象 2 函数的上下文 xff08 this xff09 会自动指向这个对象 3 函数体内的语句会执行 4 函数会自动返回上下文对象 xff0

随机推荐

  • P1786 帮贡排序

    题目背景 在absi2011的帮派里 xff0c 死号偏多 现在absi2011和帮主等人联合决定 xff0c 要清除一些死号 xff0c 加进一些新号 xff0c 同时还要鼓励帮贡多的人 xff0c 对帮派进行一番休整 题目描述 目前帮派
  • vim如何提高效率:使用jk绑定Esc

    vim使用jk绑定Esc 为什么要使用jk绑定Esc vim的精华就在于几个基本的模式插入模式 底行模式 可视模式 xff0c 命令模式 正是因为这几个模式的存在让vim效率极高 虽然如此 xff0c 经常使用vim的人不难体会到从插入模式
  • Docker 安装mysql 解决中文乱码,数据持久化进入本地

    目录 一 xff1a 简单版的 xff08 没有持久化 xff0c 有乱码 xff0c 直接run 的容器实例 xff09 1 拉取镜像到本地 2 安装运行简单版 2 1 验证使用 xff0c 建库建表插入数据 2 2外部Win10也来连接
  • python中while语句

    一 while语句 1语法 xff1a while 条件 条件成立重复执行的代码1 条件成立重复执行的代码2 运用while语句需要注意 xff1a 1 初始值 2 跳出while的条件 3 计数器的变化 xff08 自增自减等等 xff0
  • SPSS数据分析

    第一题 表1 居民健康状况调查情况 编号 身高 xff08 cm xff09 体重 xff08 kg xff09 代谢综合征 性别 胆固醇 xff08 mmol L xff09 1 173 0 87 5 0 0 4 17 2 168 0 7
  • HA高可用集群文档搭建

    HA高可用集群文档搭建 准备工作 1 准备好三台虚拟机分别为hadoop01 hadoop02 hadoop03 创建安装包以及安装后的文档文件夹 span class token punctuation span root 64 hado
  • Python 计算机视觉(十三)—— 图像的傅里叶变换

    参考的一些文章以及论文我都会给大家分享出来 链接就贴在原文 xff0c 论文我上传到资源中去 xff0c 大家可以免费下载学习 xff0c 如果当天资源区找不到论文 xff0c 那就等等 xff0c 可能正在审核 xff0c 审核完后就可以
  • this的指向、工厂方法创建函数、构造函数

    一 this的指向 耐心看完 xff0c 这个彻底理解 xff0c 才不会成为一时的记忆 1 我们先来看函数的参数 xff1a function fn a b 形参 console log a b a 1 b 2 fn 1 2 实参 这没有
  • Minimum Sum ( 单调栈 )

    Minimum Sum xff08 AtCoder agc005 b xff09 Problem Statement One day Snuke was given a permutation of length N a1 a2 aN fr
  • F623光猫超级管理员密码获取

    中兴F623光猫超级管理员密码获取 事前说明 如果你不熟悉光猫的操作 xff0c 请勿修改或拆解任何与光猫有关的命令 零件 网线等 操作有风险 xff0c 运行需谨慎 光猫型号 xff1a ZXHN F623 所属运营商 xff1a 中国移
  • python制作字符动画

    字符动画从零制作 先展示一下效果吧 badapple 对动画有了解的人应该知道 xff0c 动画看起来是流畅的动作 xff0c 但其实是连续快速播放一张张图片 xff0c 欺骗眼睛达到的效果 xff0c 字符动画也是这样的原理 xff0c
  • 删除顺序表中相同元素

    删除顺序表中相同元素 题目 任意输入一长度为n的非递减数组 请设计算法删除其中的相同元素 方法 双指针判别 xff0c 具体看代码 xff1a span class token macro property span class token
  • 《Vim实用技巧(第2版)》学习笔记:技巧62-用寄存器中的内容替换高亮选区的内容

    技巧62 用寄存器中的内容替换高亮选区的内容 在可视模式下使用p命令时 xff0c Vim将用指定的寄存器内容来替换高亮选区中的文本 可以解决弄丢了复制内容的问题把删除和粘贴合成了一步 xff0c 不需要先删除高亮选区的内容再粘贴 无名寄存
  • 蓝桥杯 算法提高 最小字符串

    试题 算法提高 最小字符串 时间限制 xff1a 2 0s 内存限制 xff1a 256 0MB 问题描述 给定一些字符串 只包含小写字母 xff0c 要求将他们串起来构成一个字典序最小的字符串 输入格式 第一行T 表示有T组数据 接下来T
  • 哈夫曼编码/译码器

    哈夫曼编码 译码器 题目 哈夫曼编码 译码器 利用哈夫曼编码进行信息通信可以大大提高信道利用率 xff0c 缩短信息传输时间 xff0c 降低传输成本 但是 xff0c 这要求在发送端通过一个编码系统对待传数据预先编码 xff0c 在接收端
  • C/C++实数按精度输出

    C语言实现方法 调用 lt stdio h gt 库的printf函数实现 printf m nf answer 中m表示指定列宽 xff0c n表示保留小数个数 xff08 注意 xff1a 它不能自动四舍五入 xff09 include
  • ++i为啥比i++好

    43 43 i 的实现 43 43 i 表示先将 i 的值加 1 xff0c 再使用增加后的值 前置 xff08 43 43 i xff09 返回引用且不产生临时对象 span class token comment 43 43 i 以in
  • C++可变参数函数模板和可变参数类模板

    1 可变参数函数模板 1 1 定义 可变参数函数模板指的是接受任意数量和类型的参数的函数模板 xff0c 它具有语法上的可变参数 xff0c 因此可以用于实现各种通用算法和容器 定义可变参数函数模板需要使用模板参数包 xff08 templ
  • 守护进程、僵尸进程、孤儿进程

    守护进程 僵尸进程 孤儿进程 守护进程 xff08 Daemon Process xff09 定义 守护进程又称Daemon进程 xff08 精灵进程 xff09 xff0c 是Linux中的后台服务进程 它的生命周期较长 xff0c 通常
  • Python操作邮箱发送邮件(网易邮箱)

    以网易邮箱为例 xff1a 准备工作 xff1a 1 xff09 首先进入网页版网易邮箱 xff0c 点击设置 2 xff09 点击 xff0c POP3 SMTP IMAP 3 xff09 开启 IMAP SMTP服务 和 POP3 SM