Python用邮箱发送附件
在日常工作中,我们经常需要用到邮箱来发送文件,特别是需要发送附件的情况。Python提供了强大的库和模块,可以方便地实现用邮箱发送附件的功能。本文将介绍如何使用Python发送带有附件的邮件,并提供相关的代码示例。
准备工作
在使用Python发送邮件前,我们需要先准备好以下内容:
-
SMTP服务器信息:首先需要获取邮件服务器的地址和端口号。不同的邮件服务提供商可能有不同的地址和端口号,具体的信息可以在邮件服务提供商的官方网站上找到。
-
发件人和收件人的邮箱地址:发送邮件需要知道发件人和收件人的邮箱地址。
-
邮箱账号和密码:发送邮件需要使用邮箱的账号和密码进行身份验证。
安装依赖库
为了发送邮件,我们需要安装Python的smtplib和email库。可以使用以下命令进行安装:
pip install smtplib
pip install email
实现代码
首先,需要导入所需的库和模块:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
接下来,我们需要设置邮件的基本信息,包括发件人、收件人、主题等:
# 发件人和收件人
sender = 'sender@example.com'
receiver = 'receiver@example.com'
# 邮件主题
subject = 'Python发送附件示例'
# 创建一个带附件的邮件实例
message = MIMEMultipart()
message['From'] = Header("发件人姓名", 'utf-8')
message['To'] = Header("收件人姓名", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
接下来,我们需要设置邮件正文和附件:
# 邮件正文内容
message.attach(MIMEText('这是一封Python发送附件的示例邮件', 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
message.attach(att1)
# 构造附件2,传送当前目录下的 test.jpg 文件
att2 = MIMEText(open('test.jpg', 'rb').read(), 'base64', 'utf-8')
att2["Content-Type"] = 'application/octet-stream'
att2["Content-Disposition"] = 'attachment; filename="test.jpg"'
message.attach(att2)
最后,我们需要连接SMTP服务器,并发送邮件:
try:
smtpObj = smtplib.SMTP('smtp.example.com', 25)
smtpObj.login('smtp_username', 'smtp_password')
smtpObj.sendmail(sender, receiver, message.as_string())
smtpObj.quit()
print("邮件发送成功")
except smtplib.SMTPException:
print("Error: 无法发送邮件")
示例演示
下面是一个使用Python发送带有附件的邮件的完整示例代码:
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
# 发件人和收件人
sender = 'sender@example.com'
receiver = 'receiver@example.com'
# 邮件主题
subject = 'Python发送附件示例'
# 创建一个带附件的邮件实例
message = MIMEMultipart()
message['From'] = Header("发件人姓名", 'utf-8')
message['To'] = Header("收件人姓名", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
# 邮件正文内容
message.attach(MIMEText('这是一封Python发送附件的示例邮件', 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的 test.txt 文件
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
att1["Content-Type"] = 'application/octet-stream'
att1["Content-Disposition"] = 'attachment; filename="test.txt"'
message.attach(att1)
# 构造附件2,传送当前目录下的 test.jpg 文件
att2 = MIMEText(open('test.jpg', 'rb').read