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

使用Python解析和发送rfc822格式的邮件

发布时间:2023-12-16 13:23:59

在Python中,可以使用标准库中的email模块来解析和发送rfc822格式的邮件。下面是一个使用例子,它包括邮件的解析和发送两个步骤。

1. 解析邮件:

import email

# 读取邮件文件
with open('email.txt', 'r') as file:
    message = email.message_from_file(file)

# 获取邮件头信息
print('发件人:', message['From'])
print('收件人:', message['To'])
print('主题:', message['Subject'])

# 获取邮件正文
if message.is_multipart():
    for part in message.get_payload():
        if part.get_content_type() == 'text/plain':
            print(part.get_payload())
else:
    print(message.get_payload())

在此例中,假设邮件文件名为email.txt。使用email.message_from_file()函数将文件内容解析为message对象。然后,可以通过message对象的属性来获取发件人、收件人和主题等信息。如果邮件包含多部分,可以使用is_multipart()函数和get_payload()方法来获取每个部分的内容。

2. 发送邮件:

import smtplib
from email.mime.text import MIMEText

# 构造邮件
msg = MIMEText('邮件内容', 'plain', 'utf-8')
msg['From'] = 'sender@example.com'
msg['To'] = 'recipient@example.com'
msg['Subject'] = '邮件主题'

# 发送邮件
smtp_server = 'smtp.example.com'
smtp_port = 587
smtp_username = 'username'
smtp_password = 'password'

try:
    with smtplib.SMTP(smtp_server, smtp_port) as server:
        server.starttls()
        server.login(smtp_username, smtp_password)
        server.sendmail(msg['From'], msg['To'], msg.as_string())
        print('邮件发送成功')
except Exception as e:
    print('邮件发送失败:', str(e))

在此例中,首先构造了一个MIMEText对象,指定了邮件内容、编码方式和邮件类型。然后,设置了发件人、收件人和主题等邮件头信息。最后,使用SMTP类来连接SMTP服务器并发送邮件。在连接时,还可以使用starttls()方法启用TLS加密。使用login()方法进行身份验证,然后使用sendmail()方法发送邮件。如果发送成功,将打印"邮件发送成功",否则打印错误信息。

注意:上述例子中使用的SMTP服务器、端口、用户名和密码等信息需要根据具体情况进行替换。

综上所述,可以使用Python的email模块来解析和发送rfc822格式的邮件。通过解析邮件头信息和正文内容,可以提取所需的信息。通过构造MIMEText对象和连接SMTP服务器,可以发送邮件。