欢迎访问宙启技术站
智能推送

如何使用Python的utility模块进行邮件的发送和接收

发布时间:2024-01-14 19:07:02

Python的utility模块中包含了邮件发送和接收的功能,可以通过该模块实现邮件的发送和接收。下面将介绍如何使用Python的utility模块进行邮件的发送和接收,并给出使用实例。

一、邮件发送

1. 导入模块

首先需要导入smtplib模块,该模块是Python内置的发送邮件的模块。

import smtplib

2. 配置邮件服务器

在发送邮件前,需要配置邮件服务器的相关信息,包括服务器地址、端口号、用户名和密码。

smtp_server = 'smtp.163.com'     # 邮件服务器地址
smtp_port = 25                  # 邮件服务器端口号
username = 'your_email@163.com'   # 邮箱用户名
password = 'your_password'        # 邮箱密码

3. 创建邮件对象

使用smtplib模块的SMTP函数创建一个SMTP对象,并进行登录认证。

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.login(username, password)

4. 设置邮件内容

调用SMTP对象的sendmail方法,设置邮件的发送者、接收者、主题和正文内容,并将邮件格式化为字符串。

sender = 'your_email@163.com'         # 发送者邮箱地址
receivers = ['receiver1@163.com', 'receiver2@163.com']  # 接收者邮箱地址
subject = '邮件主题'
message = '邮件正文'

msg = 'From:{0}
To:{1}
Subject:{2}
{3}'.format(sender, ','.join(receivers), subject, message)

5. 发送邮件

使用SMTP对象的sendmail方法发送邮件。

smtp_obj.sendmail(sender, receivers, msg)

6. 关闭SMTP连接

发送完邮件后,需要调用SMTP对象的quit方法关闭连接。

smtp_obj.quit()

7. 完整的发送邮件的示例代码

import smtplib

smtp_server = 'smtp.163.com'
smtp_port = 25
username = 'your_email@163.com'
password = 'your_password'

smtp_obj = smtplib.SMTP(smtp_server, smtp_port)
smtp_obj.login(username, password)

sender = 'your_email@163.com'
receivers = ['receiver1@163.com', 'receiver2@163.com']
subject = '邮件主题'
message = '邮件正文'

msg = 'From:{0}
To:{1}
Subject:{2}
{3}'.format(sender, ','.join(receivers), subject, message)

smtp_obj.sendmail(sender, receivers, msg)
smtp_obj.quit()

二、邮件接收

1. 导入模块

首先需要导入poplib模块,该模块是Python内置的接收邮件的模块。

import poplib

2. 配置邮件服务器

在接收邮件前,需要配置邮件服务器的相关信息,包括服务器地址、端口号、用户名和密码。

pop_server = 'pop.163.com'        # 邮件服务器地址
pop_port = 995                    # 邮件服务器端口号
username = 'your_email@163.com'   # 邮箱用户名
password = 'your_password'        # 邮箱密码

3. 连接邮件服务器

使用poplib模块的POP3_SSL函数创建一个POP3_SSL对象,并连接到邮件服务器。

pop_obj = poplib.POP3_SSL(pop_server, pop_port)
pop_obj.user(username)
pop_obj.pass_(password)

4. 接收邮件列表

调用POP3_SSL对象的list方法可以获取邮件列表,返回的是邮件的数量和占用空间的大小。

mail_list = pop_obj.list()

5. 获取指定邮件

调用POP3_SSL对象的retr方法可以获取指定邮件的内容。这里以获取最新一封邮件为例,邮件的索引从1开始。

mail_index = len(mail_list[1])
resp, lines, octets = pop_obj.retr(mail_index)
message = b'\r
'.join(lines).decode()

6. 解析邮件内容

接收到的邮件内容是一个字符串,可以使用email模块进行解析,获取邮件的主题、发件人、收件人等信息。

import email

msg = email.message_from_string(message)
subject = msg['subject']
from_addr = msg['from']
to_addr = msg['to']

7. 关闭POP3连接

接收完邮件后,需要调用POP3_SSL对象的quit方法关闭连接。

pop_obj.quit()

8. 完整的接收邮件的示例代码

import poplib
import email

pop_server = 'pop.163.com'
pop_port = 995
username = 'your_email@163.com'
password = 'your_password'

pop_obj = poplib.POP3_SSL(pop_server, pop_port)
pop_obj.user(username)
pop_obj.pass_(password)

mail_list = pop_obj.list()
mail_index = len(mail_list[1])
resp, lines, octets = pop_obj.retr(mail_index)
message = b'\r
'.join(lines).decode()

msg = email.message_from_string(message)
subject = msg['subject']
from_addr = msg['from']
to_addr = msg['to']

pop_obj.quit()

通过上述代码,你可以实现通过Python的utility模块发送和接收邮件的功能。根据自己的需求,可以对发送和接收的代码进行修改和扩展。