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

imapclient / smtplib 收发邮件



前言

简单给大家写个如何用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),这只是获取内容的第一步,后续比如获取这个邮件的发收地址、正文内容需要大家去查资料学习一下啦。

在这里插入图片描述

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

总结

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

相关推荐

  1. Python 自动化处理图片(

    2023-12-14 10:58:03       32 阅读
  2. Python电子邮件自动化实战案例

    2023-12-14 10:58:03       19 阅读
  3. python收到邮件会在桌面弹出提醒

    2023-12-14 10:58:03       31 阅读
  4. Python电子邮件自动化基础:从零开始

    2023-12-14 10:58:03       16 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-14 10:58:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-14 10:58:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-14 10:58:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-14 10:58:03       18 阅读

热门阅读

  1. CUDA锁页内存的使用

    2023-12-14 10:58:03       37 阅读
  2. 跨线程保持上下文

    2023-12-14 10:58:03       38 阅读
  3. linux的命令和vi的使用

    2023-12-14 10:58:03       33 阅读
  4. xtu oj 1271 color

    2023-12-14 10:58:03       37 阅读
  5. Ceph入门到精通-TCP和UDP相关的指标

    2023-12-14 10:58:03       27 阅读
  6. ceph-deploy 遇到的使用问题

    2023-12-14 10:58:03       40 阅读
  7. 堆和栈的区别

    2023-12-14 10:58:03       34 阅读
  8. 构造列表存储1000以内的素数

    2023-12-14 10:58:03       35 阅读
  9. 【Django-03】模型常用的增删改查

    2023-12-14 10:58:03       32 阅读
  10. 【Git使用总结】

    2023-12-14 10:58:03       39 阅读
  11. debian12 最小化安装桌面 i3wm

    2023-12-14 10:58:03       36 阅读
  12. 算法训练营Day15(二叉树)

    2023-12-14 10:58:03       42 阅读