python3通过qq邮箱发送邮件以及附件

1. 使用Python3发送带附件的邮件

在Python中,我们可以使用smtplib模块来发送邮件,并使用email模块来构建邮件内容。下面我们将学习如何使用Python3通过QQ邮箱发送带有附件的邮件。

1.1 安装smtplib和email模块

首先,确保你已经安装了Python3的开发环境。然后可以使用以下命令来安装smtplib和email模块:

pip install smtplib

pip install email

1.2 导入模块

在代码中,我们将需要导入smtplib和email两个模块,以便使用它们来发送邮件并构建邮件内容。使用以下代码导入这两个模块:

import smtplib

from email.mime.multipart import MIMEMultipart

from email.mime.text import MIMEText

from email.mime.base import MIMEBase

from email import encoders

1.3 登录QQ邮箱

在使用QQ邮箱发送邮件之前,我们需要先登录到QQ邮箱的SMTP服务器。首先,你需要开启QQ邮箱的SMTP服务,并获得授权码。然后,使用以下代码进行登录:

sender_email = "your_email@qq.com" # 发送方邮箱

sender_password = "your_password" # 发送方邮箱授权码

smtp_server = "smtp.qq.com" # QQ邮箱的SMTP服务器地址

smtp_port = 587 # QQ邮箱的SMTP服务器端口(通常为587)

# 登录QQ邮箱

server = smtplib.SMTP(smtp_server, smtp_port)

server.starttls() # 启用TLS加密

server.login(sender_email, sender_password)

1.4 创建邮件对象

创建一个MIMEMultipart类型的邮件对象,以支持发送HTML格式的邮件和附件。使用以下代码创建邮件对象:

email_subject = "这是一封测试邮件" # 邮件主题

email_content = "这是一封测试邮件,带有附件。" # 邮件正文内容

message = MIMEMultipart()

message["From"] = sender_email

message["To"] = "recipient_email@example.com" # 收件人邮箱

message["Subject"] = email_subject

1.5 添加邮件正文

添加邮件的正文内容,可以使用MIMEText对象来指定邮件的文本内容和内容类型。在正文中,我们可以使用HTML标签来格式化邮件内容。使用以下代码将邮件正文内容添加到邮件对象中:

email_body = "

邮件正文标题

这是一封测试邮件的正文内容。这里是第二个段落。"

email_body_part = MIMEText(email_body, "html")

message.attach(email_body_part)

1.6 添加附件

如果需要在邮件中添加附件,我们可以使用MIMEBase对象来表示附件。首先,使用以下代码打开附件文件:

attachment_file = open("path/to/attachment_file.pdf", "rb")

然后,使用MIMEBase对象来表示附件的类型和名称,并将附件内容添加到MIMEBase对象中:

attachment_part = MIMEBase("application", "octet-stream")

attachment_part.set_payload((attachment_file).read())

最后,使用encoders模块来编码附件,并将附件添加到邮件对象中:

encoders.encode_base64(attachment_part)

attachment_part.add_header("Content-Disposition", "attachment;filename=attachment_file.pdf")

message.attach(attachment_part)

1.7 发送邮件

最后,通过SMTP服务器发送邮件:

server.sendmail(sender_email, recipient_email, message.as_string())

server.quit()

至此,我们已经学习了使用Python3通过QQ邮箱发送带有附件的邮件的方法。希望这篇文章对你有所帮助!

后端开发标签