Python 自动化之收发邮件(一)

imapclient / smtplib 收发邮件


文章目录

  • imapclient / smtplib 收发邮件
  • 前言
  • 一、基本内容
  • 二、发送邮件
    • 1.整体代码
  • 三、获取邮件
    • 1.整体代码
  • 总结


前言

简单给大家写个如何用Python进行发邮件和查看邮件教程,希望对各位有所帮助。


一、基本内容

本文主要分为两部分,内容不多很快就能看完。

  • 使用smtplib库发邮件。
  • 使用imapclient获取邮件。

二、发送邮件

1.整体代码

代码如下:

import smtplib# 设置服务器的地址和端口
smtpobj = smtplib.SMTP_SSL('smtp.163.com', 465)# 向邮件服务器打招呼,建立连接必不可少的一步
smtpobj.ehlo()# 登录到smtp服务器
smtpobj.login('xxxxxx@163.com', 'LSKEFHPOxxxxxJW')# 163邮箱给qq邮箱发送邮件
smtpobj.sendmail('xxxxxxxx@163.com', 'xxxxxxx@qq.com', 'Subject: test message\nhello,this is a test message')# 从smtp服务器断开
smtpobj.close()
  • 第一步:先import一下库。
  • 第二步:设置邮箱服务器的地址和端口,这里采用SMTP_SSL加密模式进行传输。
  • 第三步:向邮件服务器打招呼,建立连接必不可少的一步(在使用SMTP对象发送邮件之前,需要先调用 ehlo() 或者 helo() 方法向服务器进行身份验证)。
  • 第四步:输入邮箱账号和授权码 (注意不是登录用的密码)进行登录。
  • 第五步:输入三个参数,一是要发送邮件的地址;二是接收邮件的地址;三是编写发送内容(Subject: test message\n:是邮件主题,hello,this is a test message:是邮件正文)。

效果图

  • 第六步:断开服务器连接。

三、获取邮件

1.整体代码

代码如下:

import imapclient
import pprint# 设置邮箱服务器的接收地址和端口
imap0bj = IMAPClient("imap.163.com", ssl=True, port=993)# 登录到imap服务器
imap0bj.login("xxxxxx1@163.com", "LSKEFHPOVxxxxxxJW")# 基于 RFC 2971协议 的IMAP4 ID extension 的通信规则,连接服务器需要上传ID信息
imap0bj.id_({"name": "xxxxx", "version": "2.1.0"})# 查看邮箱列表
pprint.pprint(imap0bj.list_folders())# 查看邮箱列表哪个文件夹里的信息
messages = imap0bj.select_folder('已发送')
pprint.pprint(messages)# 搜索这个文件夹里的所有东西,这里只是返回邮件的唯一ID
uids = imap0bj.search(['ALL'])
print(uids)# 遍历邮件的ID来逐个显示其内容
for uid in uids:message = imap0bj.fetch(uid, ['BODY[]'])pprint.pprint(message)# 断开服务器连接
imap0bj.logout()
  • 第一步:先import一下库,pprint这里的作用是让数据格式便于阅读。

  • 第二步:设置邮箱服务器的地址和端口,这里采用 ssl=True 加密模式进行传输。

  • 第三步:输入邮箱账号和授权码 (注意不是登录用的密码)进行登录。

  • 第四步:这个是人家要求的,必须得上传一下ID身份信息,看下图。我测了一下name那里填写xxxxx也行,懂我意思吧。
    相关链接:https://help.mail.163.com/faqDetail.do?code=d7a5dc8471cd0c0e8b4b8f4f8e49998b374173cfe9171305fa1ce630d7f67ac2eda07326646e6eb0
    在这里插入图片描述

  • 第五步:查看邮箱列表,我的是这样的。

在这里插入图片描述

  • 第六步:查看邮箱列表已删除文件夹里的信息。

在这里插入图片描述

  • 第七步:搜索这个文件夹里的所有东西,这里只是返回邮件的唯一UID。

在这里插入图片描述

  • 第八步:遍历邮件的UID来逐个显示其内容(格式为RFC 822),这只是获取内容的第一步,后续比如获取这个邮件的发收地址、正文内容需要大家去查资料学习一下啦。

在这里插入图片描述

  • 第九步:断开服务器连接。

总结

代码量不多,大家可以试一下。
这只是自动化收发邮件的第一步,后续有时间我出个电脑触发某个时间后程序自动向目标邮箱发送指定内容的教程吧哈哈哈哈哈啊哈哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/283933.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

选择排序、快速排序和插入排序

1. 选择排序 xuanze_sort.c #include<stdio.h> #include<stdlib.h>//选择排序void xuanze_sort(int arr[],int sz){//正着for(int i0;i<sz;i){//外层循环从第一个数据开始依次作为基准数据for(int j i1;j<sz;j){//int j i1 因为第一个数据作为了基准数据&…

挑战内网安全难题,迅软DSE如何以管控之力助您一臂之力?

随着信息化程度的提高&#xff0c;政企单位面临更加复杂和不可控的内网安全问题。由于缺乏有效技术手段和完善的管理机制&#xff0c;企业内网管理长期处于被动状态&#xff0c;而在发生数据安全事件后的快速处置能力也相对薄弱。 迅软DSE桌面管理系统成为解决方案&#xff0c…

【第2期】Springboot如何快速集成SpringSecurity

简单介绍 本专栏主要结合实战讲解&#xff0c;不过多介绍细节的概念&#xff0c;概念可以通过搜索引擎查找&#xff0c;一搜一大把&#xff0c;切入正题。 本专栏的实战项目是基于SpringbootSpringSecurityRSAJWTVUE的全栈开发项目&#xff0c;每个环节都会专门讲&#xff0c;…

SpringBoot + Vue前后端分离项目实战 || 三:Spring Boot后端与Vue前端连接

系列文章&#xff1a; SpringBoot Vue前后端分离项目实战 || 一&#xff1a;Vue前端设计 SpringBoot Vue前后端分离项目实战 || 二&#xff1a;Spring Boot后端与数据库连接 SpringBoot Vue前后端分离项目实战 || 三&#xff1a;Spring Boot后端与Vue前端连接 SpringBoot V…

力扣200. 岛屿数量(java DFS解法)

Problem: 200. 岛屿数量 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 该问题可以归纳为一类遍历二维矩阵的题目&#xff0c;此类中的一部分题目可以利用DFS来解决&#xff0c;具体到本题目&#xff1a; 1.我们首先要针对于二维数组上的每一个点&#xff0c;尝试展…

搜维尔科技:让鳄鱼在银幕上唱跳,奇幻电影《鳄鱼莱莱》幕后揭秘

把《鳄鱼莱莱》从儿童读物改编成真人电影&#xff0c;这绝非易事。首先需要塑造一条长一米八的鳄鱼&#xff0c;然后还能栩栩如生地唱歌跳舞&#xff0c;并与奥斯卡获奖演员哈维尔巴登&#xff08;Javier Bardem&#xff09;一起表演&#xff0c;向观众展现原作中吸引人的神奇之…

B01、JVM与Java体系结构-01

字节码与多语言混合编程 字节码概述&#xff1a; 我们平时说的java字节码&#xff0c;指的是用java语言编译成的字节码。准确的说任何能在jvm平台上执行的字节码格式都是一样的。所以应该统称为&#xff1a;jvm字节码。不同的编译器&#xff0c;可以编译出相同的字节码文件&…

Docker实战案例研究:深入行业应用与最佳实践

Docker作为一种轻量级、可移植、可扩展的容器化技术&#xff0c;在各行各业都得到了广泛应用。本文将通过深入实际案例&#xff0c;介绍Docker在不同行业的应用以及相应的最佳实践&#xff0c;提供更加丰富的示例代码&#xff0c;以帮助大家更全面地理解和运用Docker的强大功能…

法大大邀业内大咖剖析汽车名企数智化实战路径

法大大发布中国首部《汽车行业合同数智化白皮书》&#xff0c;聚焦趋势&#xff0c;解读行业数字化转型攻坚战的破局之道&#xff1b;深入内部&#xff0c;剖析名企数字化的探索实践。 长安汽车、蔚来汽车、上汽大通、 东风汽车集团、奥托立夫、长城滨银汽金… 一众名企高层…

sqlserver dba日常操作

查询慢sql的方法 1.whoisactive 安装方法 http://whoisactive.com/downloads/下载地址 将下载好的zip包放到sqlserver服务器中 文件-打开-文件-下载好的zip包-在查询窗口点击执行 新建一个查询窗口&#xff0c;输入sp_whoisactive&#xff0c;获取当前运行的所有sql语句 使用…

宝塔部署flask项目

宝塔(bt.cn)部署flask项目&#xff0c;发现问题还挺多。不过终于是搞定了。 先可以用pycharm建一个空的flask项目&#xff0c;这样好发现问题。 到网站栏目点击python项目&#xff0c;新建一个python项目。 要选择flask框架&#xff0c;uwsgi运行方式。 端口如果选择80端口&a…

执行计划EXPLAIN详解

什么是EXPLAIN&#xff1f; EXPLAIN是MySQL提供的一条语句&#xff0c;用于详细展示MySQL如何执行一条SELECT语句。通过使用EXPLAIN&#xff0c;开发者可以看到MySQL如何处理查询及连接表&#xff0c;帮助我们诊断性能问题。 使用方法非常直接&#xff0c;只需在SELECT查询前…