如何使用Python脚本来处理电子邮件?

天天见闻 天天见闻 2022-05-11 科技 阅读: 225
摘要: 本节我们将学习如何通过POP3和IMAP服务器接收电子邮件。提供了​​​​​和​​​​模块,用于通过脚本接收电子邮件。此标准协议可帮助我们接收从远程服务器发送到本地计算机的电子邮件。),它通过本地计算机访问远程服务器上的电子邮件。在上面的示例程序中,首先导入了​​​​​模块,该模块可以通过IMAP安全地接收电子邮件。的​​​​​模块,该模块可以使用脚本发送和接收电子邮件。

本文我们将学习如何使用脚本来处理电子邮件。首先,我们将学习电子邮件消息格式,并使用​​​​模块发送和接收电子邮件。然后将学习使用的Email程序包发送带附件和HTML内容的电子邮件。最后将学习电子邮件的不同协议。

本章将介绍以下内容。

1邮件消息格式

本节我们将学习电子邮件的消息格式。电子邮件包含3个主要组件,如下所示。

消息中还包括其他组件,例如主题行、电子邮件签名和附件等。

下面是一个简单的示例程序,它通过Gmail邮箱发送纯文本电子邮件,我们可以从中了解如何编写电子邮件并发送邮件。现在创建一个脚本,命名为​​.py​​,并在其中添加以下代码。

import smtplib
import getpass

host_name = "smtp.gmail.com"
port = 465

sender = 'sender_emil_id'
receiver = 'receiver_email_id'
password = getpass.getpass()

msg = """\
Subject: Test Mail
Hello from Sender !!"""

s = smtplib.SMTP_SSL(host_name, port)
s.login(sender, password)
s.sendmail(sender, receiver, msg)
s.quit()

print("Mail sent successfully")

运行脚本程序,如下所示。

student@ubuntu:~/work/Chapter_11$ python3 write_email_message.py

输出如下。

Password:
Mail sent successfully

上面的示例程序使用的​​​​​模块发送了电子邮件。首先确认是通过Gmail邮箱向收件人发送电子邮件。变量​​​​​保存发件人的电子邮件地址。变量​​​​​中,可以直接输入密码,也可以使用​​​​​模块在运行时提示输入密码,这里使用​​​​​提示输入密码。接下来创建了一个变量​​msg​​​,它存储了电子邮件消息的内容,其中首先指出了邮件主题,然后是将要发送的消息正文。然后,在​​login()​​​函数中,传入了​​​​​和​​​​​变量。之后在​​()​​​函数中,传入了​​​​​、​​​​​和​​msg​​变量。如此,就可成功发送电子邮件。

2添加HTML和多媒体内容

本节我们将了解如何添加HTML内容,以及如何将多媒体内容作为附件发送。这里使用的​​Email​​程序包。

首先我们来看如何添加HTML内容。创建一个脚本,命名为​​.py​​,并在其中添加以下代码。

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
import getpass

host_name = 'smtp.gmail.com'
port = 465

sender = 'sender_emailid'
password = getpass.getpass()
receiver = 'receiver_emailid'

text = MIMEMultipart()
text['Subject'] = 'Test HTML Content'
text['From'] = sender
text['To'] = receiver

msg = """\


Hello there,

Good day !!

Home




"""

html_content = MIMEText(msg, "html")
text.attach(html_content)
s = smtplib.SMTP_SSL(host_name, port)
print("Mail sent successfully !!")

s.login(sender, password)
s.sendmail(sender, receiver, text.as_string())
s.quit()

运行脚本程序,如下所示。

student@ubuntu:~/work/Chapter_11$ python3 add_html_content.py

输出如下。

Password:
Mail sent successfully !!

在上面的示例程序中,使用了Email程序包发送包含HTML内容的消息。其中的​​msg​​变量用于存储HTML内容。

现在我们来学习如何添加附件,并通过脚本发送带附件的电子邮件。创建一个脚本,命名为​​.py​​,并在其中添加以下代码。

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
import getpass

host_name = 'smtp.gmail.com'
port = 465

sender = 'sender_emailid'
password = getpass.getpass()
receiver = 'receiver_emailid'

text = MIMEMultipart()
text['Subject'] = 'Test Attachment'
text['From'] = sender
text['To'] = receiver

txt = MIMEText('Sending a sample image.')
text.attach(txt)
f_path = 'path_of_file'
with open(f_path, 'rb') as f:
img = MIMEImage(f.read())
img.add_header('Content-Disposition',
'attachment',
filename=os.path.basename(f_path))

text.attach(img)
s = smtplib.SMTP_SSL(host_name, port)
print("Attachment sent successfully !!")
s.login(sender, password)
s.sendmail(sender, receiver, text.as_string())
s.quit()

运行脚本程序,如下所示。

student@ubuntu:~/work/Chapter_11$ python3 add_attachment.py

输出如下。

Password:
Attachment sent successfully !!

上面的示例程序中,首先给出了发件人和收件人的电子邮件ID。然后在​​​​中,给出了作为附件发送的图像的文件路径。最后将该图像作为附件发送给收件人。

3POP3和IMAP服务器

本节我们将学习如何通过POP3和IMAP服务器接收电子邮件。提供了​​​​​和​​​​模块,用于通过脚本接收电子邮件。

3.1使用模块接收电子邮件

POP3代表邮局协议版本3(Post 3)。此标准协议可帮助我们接收从远程服务器发送到本地计算机的电子邮件。POP3的主要优点是允许将电子邮件下载到本地计算机上,从而可以离线阅读下载的电子邮件。

POP3使用两个端口。

现在我们来看一些示例程序,首先是一个接收大量电子邮件的示例程序。创建一个脚本,命名为​​.py​​,并在其中添加以下代码。

import poplib
import getpass

pop3_server = 'pop.gmail.com'
username = 'Emaild_address'
password = getpass.getpass()

email_obj = poplib.POP3_SSL(pop3_server)
print(email_obj.getwelcome())
email_obj.user(username)
email_obj.pass_(password)
email_stat = email_obj.stat()
print("New arrived e-Mails are : %s (%s bytes)" % email_stat)

运行脚本程序,如下所示。

student@ubuntu:~$ python3 number_of_emails.py

程序输出的是邮箱中相当数量的电子邮件。

上面的示例首先导入​​​​模块,该模块在中通过POP3安全地接收电子邮件。然后,指定了具体的电子邮件服务器和电子邮件证书,即用户名和密码。之后输出来自服务器的响应消息,并向POP3 SSL服务器提供用户名和密码。登录后,程序会收到邮箱统计信息,并在终端输出多封电子邮件。

首先,我们编写一个脚本来获取最新的电子邮件。创建一个脚本,命名为​​.py​​接收邮件服务器,并在其中添加以下代码。

import poplib
import getpass

pop3_server = 'pop.gmail.com'
username = 'Emaild_address'
password = getpass.getpass()

email_obj = poplib.POP3_SSL(pop3_server)
print(email_obj.getwelcome())
email_obj.user(username)
email_obj.pass_(password)

print("\nLatest Mail\n")
latest_email = email_obj.retr(1)
print(latest_email[1])

运行脚本程序,如下所示。

student@ubuntu:~$ python3 latest_email.py

这将获取最近收到的邮件。

在上面的示例程序中,导入了中的​​​​模块,并通过POP3安全地接收电子邮件。在给出指定的电子邮件服务器以及用户名和密码后,程序输出了来自服务器的响应消息,并向POP3 SSL服务器提供用户名和密码,然后从邮箱中获取最新的电子邮件。

然后,编写一个脚本来获取所有电子邮件。创建一个脚本​​.py​​,并在其中添加以下代码。

import poplib
import getpass

pop3_server = 'pop.gmail.com'
username = 'Emaild_address'
password = getpass.getpass()

email_obj = poplib.POP3_SSL(pop3_server)
print(email_obj.getwelcome())
email_obj.user(username)
email_obj.pass_(password)

email_stat = email_obj.stat()
NumofMsgs = email_stat[0]
for i in range(NumofMsgs):
for mail in email_obj.retr(i+1)[1]:
print(mail)

运行脚本程序,如下所示。

student@ubuntu:~$ python3 latest_email.py

这将获取邮箱中所有电子邮件。

3.2使用模块接收电子邮件

IMAP代表消息访问协议( ),它通过本地计算机访问远程服务器上的电子邮件。IMAP允许多个客户端同时访问服务器上用户的电子邮件。当用户需要在不同客户端访问电子邮件时,更适合用IMAP完成这类操作。

IMAP使用两个端口。

现在我们来看一个使用​​​​​模块的示例程序。创建一个脚本,命名为​​.py​​,并在其中添加以下代码。

import imaplib
import pprint
import getpass

imap_server = 'imap.gmail.com'
username = 'Emaild_address'
password = getpass.getpass()

imap_obj = imaplib.IMAP4_SSL(imap_server)
imap_obj.login(username, password)
imap_obj.select('Inbox')
temp, data_obj = imap_obj.search(None, 'ALL')
for data in data_obj[0].split():
temp, data_obj = imap_obj.fetch(data, '(RFC822)')
print('Message: {0}\n'.format(data))
pprint.pprint(data_obj[0][1])
break

imap_obj.close()

运行脚本程序,如下所示。

student@ubuntu:~$ python3 imap_email.py

这将在指定文件夹中获取所有电子邮件。

在上面的示例程序中,首先导入了​​​​​模块,该模块可以通过IMAP安全地接收电子邮件。然后,指定了电子邮件服务器和电子邮件证书,即用户名和密码。之后将该用户名和密码提供给IMAP SSL服务器。其中,在​​​​​上使用​​()​​​函数来显示收件箱中的所有邮件。然后使用​​for​​​循环来逐个显示邮件消息。其中使用​​()​​函数格式化对象接收邮件服务器,并将其写入数据流。最后,程序关闭了连接。

4总结

在本章中,我们学习了如何在脚本中编写电子邮件消息,并且了解了 的​​​​​模块,该模块可以使用脚本发送和接收电子邮件。还了解了如何通过POP3和IMAP接收电子邮件。提供了​​​​​和​​​​模块,我们可以使用它们完成相关操作。

在第12章中,我们将学习和SSH。

5问题

1.什么是POP3和IMAP?

2.什么是​​for​​​循环中的​​break​​​和​​​​?举例说明。

3.什么是​​​​?

4.什么是负索引,为什么要使用负索引?

5.文件扩展名pyc和py有什么区别?

6.使用循环语句生成以下文本。

1010101
10101
101
1

​​​​

1.从基础到高级编程,全面系统地介绍脚本在系统管理中的作用。

2.市场上少见的介绍将脚本应用于系统管理的图书。

3.本书附有配套资源,帮助读者学以致用,将所学应用到真实场景中。

随着时间的推移,不断发展并扩展了其与IT操作相关的功能。简单易学,但具有功能强大的库,可用于 编写脚本以解决实际问题并自动执行管理员的日常活动。本书的目的是通过完成一系列项目,帮助读者掌握在项目中使用脚本的方法。

本书首先介绍的安装,并讲解编程基础知识。然后,本书将侧重于解析整个开发过程,从配置到准备再到构建 不同的工具,包括IT管理员的日常活动(文本处理、正则表达式、文件存档和加密)、网络管理(套接字编程、电子邮 件处理、使用/SSH远程控制设备以及SNMP/DHCP等协议)、创建图形用户界面、网站处理(日志 文件处理、SOAP和REST API通信、Web抓取),以及数据库管理(MySQL和相似数据库数据管理、数据分析和报告)。学完本书,读者将能够使用功能构建强大的工具以解决具有挑战性的实际任务。

**读者将学到以下内容: **

■ 了解如何安装和调试脚本;

■ 了解和编写用于自动化测试和日常管理活动的脚本;

■ 了解如何编写用于文本处理、加密、解密和归档的脚本;

■ 处理PDF、Excel、CSV和文本文件,并生成报告;

■ 编写用于远程网络管理(包括处理电子邮件)的脚本;

■ 使用图形用户界面构建交互式工具;

■ 处理日志文件,以及SOAP和REST API的通信;

■ 自动化数据库管理并执行统计分析。

其他相关
好学编程:知乎上最受推崇的 Python 书有哪些?你看过那本?

好学编程:知乎上最受推崇的 Python 书有哪些?你看过那本?

作者: 天天见闻 时间:2024-05-11 阅读: 2
GitHub上有一位叫皮埃尔·德·沃尔夫(Pierre de Wulf)的童鞋,通过以下方法,检索到了25本网上引用最多的 Python 书籍。 一起看看都有哪些经典 Python 书吧~ ...
好学编程:3 个最流行的 Python 框架,深入探讨它们的优势和用例!

好学编程:3 个最流行的 Python 框架,深入探讨它们的优势和用例!

作者: 天天见闻 时间:2024-05-04 阅读: 1
Python 是一种令人惊叹的语言,它已成为最流行、最通用的编程语言之一。Python 框架的可用性和实用性极大地促进了它的流行。本文好学编程将讨论前 3 个 Python 框架,并深入探讨它们的优势和用例。 ...
好学编程:2024年机器学习最常用的10个Python技术库!

好学编程:2024年机器学习最常用的10个Python技术库!

作者: 天天见闻 时间:2024-04-27 阅读: 1
机器学习领域中,有许多Python技术库被广泛应用。好学编程列举了其中10个最常用的: NumPy: NumPy 是Python中用于科学计算的基础包之一,提供了强大的多维数组对象和相应的操作工具。它是许多其他机器学习库的基础,因为它提供了高效的数组操作和线性代数函数。...
好学编程:9个Python最常用的包及使用案例!

好学编程:9个Python最常用的包及使用案例!

作者: 天天见闻 时间:2024-04-23 阅读: 1
本文好学编程总结9个Python最常用的包及使用案例! 1 NumPy 描述: NumPy 是 Python 的一个扩展库,支持高维数组与矩阵运算,并为数组运算提供了大量的数学函数库。它是科学计算中的基础包之一,用于处理大型多维数组和矩阵的运算与基础统计分析。...
好学编程:数据可视化工具最常用的有哪几种?

好学编程:数据可视化工具最常用的有哪几种?

作者: 天天见闻 时间:2024-04-11 阅读: 2
数据可视化是是一门技术,也是一门艺术。市面上有各种各样的工具来实现我们的数据分析和挖掘的目的。百度知乎上的答案五花八门,国内的国外的,知道的不知道的总有人能给你找出来。 如果你是可视化爱好者接下来介绍的可能没什么新意,本文主要是面向数据分析师初学者。对于数据分析、挖掘来说,可视化很重要的,但不是目的,目的是传达数据背后的信息(似乎白说~其实想说可视化不是DA的第一要务,只是为分析服务的),所以使用什么工具并没有那么重要。 ...
好学编程:对于Python编程者最有用和最常见的模块!

好学编程:对于Python编程者最有用和最常见的模块!

作者: 天天见闻 时间:2024-04-10 阅读: 2
你是否曾经被大量的python模块压垮过?你是否曾经在为一个特定的项目挑选一个时陷入困境?在本文中,我将与您分享一些我认为每个python开发人员都应该熟悉的python模块。好学编程将把这些模块分为四个不同的类别,方便大家查阅。 ...
我来说两句

年度爆文