当前位置: 首页 > news >正文

python自动发送邮件实现

目录

    • 1 前言
    • 2 准备工作
      • 2.1 电子邮件的基础知识。
      • 2.2 python邮件库
      • 2.3 邮箱设置
    • 3 python实现邮件自动发送
      • 3.1 SMTP()和send()方法介绍
      • 3.2 python实现实例
    • 参考信息

1 前言

python功能强大,可以实现我们日常办公的很多任务。诸如批量处理word,excel,pdf等等文件,今天先主要对如何用python来实现邮件的发送作一总结。

2 准备工作

2.1 电子邮件的基础知识。

电子邮件通俗讲就是将我们的实体信件网络化,借助互联网来发送和接收。
以QQ邮箱的发送邮件界面为例,其中包括收件人(抄送人、密送人)、主题、附件、正文、发件人等部分。

在这里插入图片描述

2.2 python邮件库

使用python来实现自动发送邮件的功能,本质上也是模拟我们实操的这一过程,只是用代码模拟了这一过程。python中内置了邮件处理的库——smtplib,不过推荐使用yagmail库,其底层仍然使用的smtplib,其提供的借口更适合日常的简单使用。

2.3 邮箱设置

想要利用python实现邮件自动发送,首先必须开通自己邮箱的SMTP服务。一般在设置中就可以找到,如下例所示。
在这里插入图片描述
开启SMTP服务后,就可以获取到当前账户的授权码(该授权码一定要记得复制、保存,这会在程序实现的过程中用到),如下图所示。
在这里插入图片描述

3 python实现邮件自动发送

实现邮件的自动发送主要用到yagmail模块中的SMTP()方法和send()方法。实现邮件的发送过程可以概括为三步:

  1. 调用SMTP()方法,创建SMTP实例;
  2. 调用send()方法,执行发送邮件操作;
  3. 断开连接。

3.1 SMTP()和send()方法介绍

SMTP()方法常用的参数如下

  • user=“发件人邮箱地址”
  • password=“授权码”
  • host=“SMTP服务器域名”

常见的电子邮件服务商的SMTP服务器域名

  • 163邮箱 :smtp.163.com
  • 126邮箱 :smtp.126.com
  • qq邮箱 :smtp.qq.com
  • Gmail邮箱 :smtp.gmail.com
  • Outlook邮箱;smtp.office365.com

send()方法常用的参数如下

  • to=收件人邮箱地址,
  • subject=邮件主题,
  • contents=正文,
  • attachments=附件存储路径,
  • cc=抄送人邮箱地址,
  • bcc=秘密抄送人邮箱地址,

当收件人有多个时,使用列表存储即可;当正文有多段时,也用列表存储即可,其他诸如附件、抄送人等有多个时,同样用列表存储即可。

3.2 python实现实例

第一个实例,自己给自己邮箱发送一个‘hello’信息,测试一下。

import yagmailmail = yagmail.SMTP("14****03@qq.com","授权码","smtp.qq.com")
mail.send("14****03@qq.com","测试邮件",'hello')
mail.close()

邮箱显示结果如下:
在这里插入图片描述
第二个实例,测试给邮箱发送多段信息,包括图片,以及发送附件信息到邮箱。

import yagmailmail = yagmail.SMTP("14****03@qq.com","授权码","smtp.qq.com")
subject = '测试正文和附件结果'
contents = ['各位领导:','请查收如下开会通知信息。详情可参考图片。',yagmail.inline(r"C:\Users\mu\Pictures\Camera Roll\Sni22.jpg"),'<a href="www.baidu.com">具体查询网址']
attachments = r"C:\Users\mu\Pictures\Camera Roll\WIN_20221212_21_41_11_Pro.jpg"
mail.send( "14****03@qq.com",subject,contents,attachments)
mail.close()

收件邮箱显示结果如下:
在这里插入图片描述

参考信息

  • python发送邮件(单发/群发)——yagmail模块
  • 《快学Python:自动化办公轻松实战》 ,黄伟、朱鹏伟,电子工业出版社,9787121436345,2022

相关文章:

python自动发送邮件实现

目录1 前言2 准备工作2.1 电子邮件的基础知识。2.2 python邮件库2.3 邮箱设置3 python实现邮件自动发送3.1 SMTP()和send()方法介绍3.2 python实现实例参考信息1 前言 python功能强大&#xff0c;可以实现我们日常办公的很多任务。诸如批量处理word,excel,pdf等等文件&#xf…...

ccc-Classification-李宏毅(4)

文章目录Classification 概念Example ApplicationHow to do ClassificationWhy not RegesssionProbability from Class - FeatureProbability from ClassHow’s the results?Modifying ModelThree StepsProbability DistributionClassification 概念 本质是找一个函数&#x…...

Kubernetes + Docker 部署一个yolov5检测服务(基于FastDeploy)

Kubernetes Docker 从零部署一个yolov5检测服务&#xff0c;服务基于PaddlePaddle/FastDeploy的服务化部署&#xff1b;所有软件从零安装。 文章目录1.说明2.环境3.安装过程 3.1安装 Docker 3.2安装 minikube 3.3安装 Kubectl4.部署过程 4.1 Docker相关 4.2 k8s相关 4.3 启动服…...

【C++/QT】QT5.6解析Excel教程(qtxlsx)

这里写目录标题【背景】【下载qtxlsx】【安装perl】【编译qtxlsx】【添加模块】【使用qtxlsx】【背景】 新接触QT&#xff0c;很多东西都不会&#xff0c;刚接触一个解析Excel的demo&#xff0c;记录一下安装、编译、解析Excel的过程 【下载qtxlsx】 在解析之前&#xff0c;…...

C++之智能指针

前言普通指针的不足new和new门的内存需要用delete和delete[释放。程序员的主观失误&#xff0c;忘了或漏了释放程序员也不确定何时释放&#xff08;例如多个线程共享同一个对象&#xff0c;没办法确定什么时候释放&#xff09;普通指针的释放类内的指针&#xff0c;在析构函数中…...

Redis实战-session共享之修改登录拦截器

在上一篇中Redis实战之session共享&#xff0c;我们知道了通过Redis实现session共享了&#xff0c;那么token怎么续命呢&#xff1f;怎么刷新用户呢&#xff1f;本来咱们就通过拦截器来实现这两个功能。 登录拦截器优化&#xff1a; 先来看看现在拦截器情况&#xff1a; 拦截…...

数据可视化,流程化处理pycharts-

本文直接进入可视化&#xff0c;输入讲解输入列表生成图片&#xff0c;关于pandas操作看这篇pandas matplotlib 导包后使用 import matplotlib.pyplot as plt饼图 使用 plt.figure 函数设置图片的大小为 15x15 使用 plt.pie 函数绘制饼图&#xff0c;并设置相关的参数&…...

1626_MIT 6.828 lab1课程大纲学习过程整理

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 现在lab1的内容全都学习完了&#xff0c;该做的练习也都做了。接下来&#xff0c;整理一下自己看这一部分课程讲义的一些笔记。 整理之前&#xff0c;先把自己完成…...

12月无情被辞:想给还不会自动化测试的技术人提个醒

公司前段时间缺人&#xff0c;也面了不少测试&#xff0c;结果竟没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但是平均水平很让人失望。基本能用一句话概括就是&#xff1a;3年测…...

开发必备技术--docker(使用篇)

文章目录前言Docker的基本概念概念数据卷虚拟网络镜像操作镜像名称镜像命令容器操作基本操作容器创建数据卷操作创建和查看数据卷其他指令实战前言 续接上一篇博文&#xff1a; 开发必备技术–docker&#xff08;一&#xff09; 这也是开学了&#xff0c;假期的最后一篇博文&a…...

2023备战金三银四,Python自动化软件测试面试宝典合集(三)

马上就又到了程序员们躁动不安&#xff0c;蠢蠢欲动的季节~这不&#xff0c;金三银四已然到了家门口&#xff0c;元宵节一过后台就有不少人问我&#xff1a;现在外边大厂面试都问啥想去大厂又怕面试挂面试应该怎么准备测试开发前景如何面试&#xff0c;一个程序员成长之路永恒绕…...

TortoiseGit 使用教程

一、下载工具 这里给大家准备了所有安装包自取 链接&#xff1a;https://pan.baidu.com/s/1xrxxgyNXNQEGD_RjwKnPMg 提取码&#xff1a;qwer 也可在官网自行下载最新版 1.下载git&#xff0c;直接去官网下载Git - Downloads&#xff0c;根据自己的系统合理下载&#xff0c…...

Linux项目自动化构建工具make/Makefile

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 目录 前言 正文 makefile文件与语法规则 make指令与执行逻辑 makefile任务刷新策略 .PHONY修饰为伪目标 最后 前言 会不会写makefile&#xff0c;从一个侧面…...

M100嵌入式自动吞吐式读写器|电动读卡机如何通过C#程序读取社保卡号

M100嵌入式自动吞吐式读写器|电动读卡机是一款双保护门功能读卡器&#xff0c;第一层防尘防异物机械门&#xff0c;第二层电动门。 M100嵌入式自动吞吐式读写器|电动读卡机采用耐高温、耐磨擦、高强度、抗老化的复合型塑胶为主体&#xff0c;在走卡通道两侧镶有不锈钢金属&…...

STM32----搭建Arduino开发环境

搭建Arduino开发环境前言一、Arduino软件1.软件下载2.软件安装3.软件操作二、Cortex官方内核三、烧录下载四、其他第三方内核1.Libmaple内核2.Steve改进的LibMaple 内核3.STMicroelectronics(ST)公司编写的内核总结前言 本章介绍搭建STM32搭建Arduino开发环境&#xff0c;包括…...

华为OD机试 - 事件推送(Python),真机试题

事件推送 题目 同一个数轴 X 上有两个点的集合 A={A1, A2, …, Am} 和 B={B1, B2, …, Bn}, Ai 和 Bj 均为正整数,A、B 已经按照从小到大排好序,A、B 均不为空, 给定一个距离 R (正整数), 列出同时满足如下条件的所有(Ai, Bj)数对: Ai <= BjAi, Bj 之间的距离小于…...

论如何获取CSDN原力

0x00 前言 因为个人需求&#xff0c;所以需要增长原力值&#xff0c;故对原力值的增长方式进行探索和总结。 0x01 正文 参考&#xff1a;https://blog.csdn.net/SoftwareTeacher/article/details/114499372 1.举报了劣质内容&#xff08;博客&#xff0c;下载的资源&#x…...

流程引擎之发展史及对比总结

流程引擎渊源市场上比较有名的开源流程引擎有 jBPM、Activiti、Camunda、Flowable 和 Compileflow。其中 jBPM、Activiti、Flowable、camunda 四个框架同宗同源&#xff0c;祖先都是 jbpm4&#xff0c;开发者只要用过其中一个框架&#xff0c;基本上就会用其它三个。而 Compile…...

【DSView逻辑分析抓取波形CAN步骤-硬件连接-数据解析-底层波形认识CAN-工具使用】

【DSView逻辑分析抓取波形CAN步骤-硬件连接-数据解析-底层波形认识CAN】1、概述2、实验环境3、写在前面的一个问题4、实验准备&#xff08;1&#xff09;硬件连接1&#xff09;CAN卡连接开发板&#xff08;2&#xff09;逻辑分析仪连接开发板&#xff08;2) CAN卡连接软件&…...

C++中的模板

1.模板C 的模板一直是这门语言的一种特殊的艺术&#xff0c;模板甚至可以独立作为一门新的语言来进行使用。模板的哲学在于将一切能够在编译期处理的问题丢到编译期进行处理&#xff0c;仅在运行时处理那些最核心的动态服务&#xff0c;进而大幅优化运行期的性能。因此模板也被…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

Opencv中的addweighted函数

一.addweighted函数作用 addweighted&#xff08;&#xff09;是OpenCV库中用于图像处理的函数&#xff0c;主要功能是将两个输入图像&#xff08;尺寸和类型相同&#xff09;按照指定的权重进行加权叠加&#xff08;图像融合&#xff09;&#xff0c;并添加一个标量值&#x…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...

归并排序:分治思想的高效排序

目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法&#xff0c;由约翰冯诺伊曼在1945年提出。其核心思想包括&#xff1a; 分割(Divide)&#xff1a;将待排序数组递归地分成两个子…...

手动给中文分词和 直接用神经网络RNN做有什么区别

手动分词和基于神经网络&#xff08;如 RNN&#xff09;的自动分词在原理、实现方式和效果上有显著差异&#xff0c;以下是核心对比&#xff1a; 1. 实现原理对比 对比维度手动分词&#xff08;规则 / 词典驱动&#xff09;神经网络 RNN 分词&#xff08;数据驱动&#xff09…...