📜  Python电子邮件(1)

📅  最后修改于: 2023-12-03 15:34:31.129000             🧑  作者: Mango

Python电子邮件

Python电子邮件模块(也称为smtplib模块)是Python中一个强大的工具,它可以用于向所有邮箱发送电子邮件。该模块已经内置于Python中,因此无需安装即可使用。您可以使用此模块轻松地使用Python编写脚本来处理您的电子邮件需求。

发送电子邮件

以下代码片段可以帮助您轻松发送电子邮件。

import smtplib

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 设置发送者的邮箱地址和密码
sender_email_address = "your_email_address"
sender_email_password = "your_email_password"

# 设置接收者的邮箱地址
receiver_email_address = "receiver_email_address"

# 创建一个带附件的邮件消息
message = MIMEMultipart()
message["From"] = sender_email_address
message["To"] = receiver_email_address
message["Subject"] = "Python电子邮件"

# 添加文本部分
message.attach(MIMEText("这是Python电子邮件发送的文本部分", "plain"))

# 添加附件部分
attachment = open("example.txt", "rb").read()
part = MIMEApplication(attachment, Name="example.txt")
part["Content-Disposition"] = 'attachment; filename="example.txt"'
message.attach(part)

# 发送邮件
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as smtp:
    smtp.login(sender_email_address, sender_email_password)
    smtp.sendmail(sender_email_address, receiver_email_address, message.as_string())

该代码使用MIMEMultipart对象创建带有文本和附件的邮件。请在代码中设置自己的发件人和收件人电子邮件,并登录您的发件人电子邮件以发送电子邮件。

接收电子邮件

如果您希望使用Python接收电子邮件,则可以使用IMAP协议。

以下是一个接收电子邮件的代码片段:

import imaplib
import email

# 设置邮箱地址和密码
email_address = "your_email_address"
email_password = "your_email_password"

# 登录邮箱并选择收件箱
mail = imaplib.IMAP4_SSL("imap.gmail.com", 993)
mail.login(email_address, email_password)
mail.select("inbox")

# 搜索邮件,并获取邮件UID
_, search_data = mail.search(None, "ALL")
email_uids = search_data[0].split()

# 获取最新邮件的UID
latest_email_uid = email_uids[-1]

# 获取最新邮件
_, message_data = mail.fetch(latest_email_uid, "(RFC822)")
raw_email = message_data[0][1]

# 解析原始电子邮件内容
email_message = email.message_from_bytes(raw_email)

# 获取电子邮件主题、发件人和正文
subject = email_message['subject']
sender = email.utils.parseaddr(email_message['from'])[1]
body = ""

if email_message.is_multipart():
    for part in email_message.walk():
        content_type = part.get_content_type()
        content_disposition = str(part.get("Content-Disposition"))
        try:
            body = part.get_payload(decode=True).decode()
        except:
            pass
else:
    content_type = email_message.get_content_type()
    try:
        body = email_message.get_payload(decode=True).decode()
    except:
        pass

# 输出电子邮件主题、发件人和正文
print("Subject:", subject)
print("From:", sender)
print("Body:", body)

该代码使用IMAP4_SSL对象连接到您的电子邮件服务提供商并选择收件箱,然后搜索所有电子邮件。使用fetch()方法获取最新的电子邮件,并使用email模块解析电子邮件的主题、发件人和正文。

无论您是想发送电子邮件还是接收电子邮件,Python电子邮件模块都是解决电子邮件需求的好工具。