Python编程中使用smtplib库发送带附件的邮件方法
发布时间:2023-12-25 13:25:49
在Python中发送带附件的邮件可以使用smtplib库,该库提供了SMTP协议的客户端实现,可以用于发送电子邮件。下面是一个使用smtplib发送带附件邮件的例子:
首先,导入smtplib、email.mime.multipart和email.mime.text库:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText
然后,创建一个MIMEMultipart对象,并设置邮件的标题、发件人和收件人:
msg = MIMEMultipart() msg['Subject'] = '邮件标题' msg['From'] = '发件人邮箱地址' msg['To'] = '收件人邮箱地址'
接下来,创建MIMEText对象,并设置邮件正文:
text = MIMEText('邮件正文', 'plain') # plain表示纯文本邮件
msg.attach(text)
在创建MIMEMultipart对象后,可以使用MIMEMultipart的attach()方法来添加附件。要添加附件,首先需要使用MIMEText或MIMEBase创建一个附件对象,然后使用MIMEMultipart的attach()方法将附件添加到邮件中。下面是添加一个文本文件附件的例子:
from email.mime.base import MIMEBase
file_path = '文件路径'
with open(file_path, 'rb') as f:
mime = MIMEBase('text', 'txt', filename='附件.txt')
mime.add_header('Content-Disposition', 'attachment', filename='附件.txt')
mime.set_payload(f.read())
smtplib.encoders.encode_base64(mime)
msg.attach(mime)
在将附件添加到邮件中后,可以调用smtplib的SMTP()方法连接到SMTP服务器,并使用login()方法登录到发件人邮箱:
smtp_server = 'SMTP服务器地址' smtp_port = 587 # SMTP服务器端口号 smtp_username = '发件人邮箱' smtp_password = '发件人邮箱密码' smtp = smtplib.SMTP(smtp_server, smtp_port) smtp.starttls() smtp.login(smtp_username, smtp_password)
最后,调用sendmail()方法发送邮件:
smtp.sendmail(msg['From'], msg['To'], msg.as_string())
完整代码如下所示:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
msg = MIMEMultipart()
msg['Subject'] = '邮件标题'
msg['From'] = '发件人邮箱地址'
msg['To'] = '收件人邮箱地址'
text = MIMEText('邮件正文', 'plain')
msg.attach(text)
file_path = '文件路径'
with open(file_path, 'rb') as f:
mime = MIMEBase('text', 'txt', filename='附件.txt')
mime.add_header('Content-Disposition', 'attachment', filename='附件.txt')
mime.set_payload(f.read())
smtplib.encoders.encode_base64(mime)
msg.attach(mime)
smtp_server = 'SMTP服务器地址'
smtp_port = 587
smtp_username = '发件人邮箱'
smtp_password = '发件人邮箱密码'
smtp = smtplib.SMTP(smtp_server, smtp_port)
smtp.starttls()
smtp.login(smtp_username, smtp_password)
smtp.sendmail(msg['From'], msg['To'], msg.as_string())
smtp.quit()
根据实际情况,将邮件标题、发件人地址、收件人地址、邮件正文、附件路径、SMTP服务器地址、SMTP服务器端口号、发件人邮箱和密码等内容替换成实际的值。运行以上代码后,即可发送带附件的邮件。
需要注意的是,为了保护发件人的邮箱安全,建议将发件人邮箱和密码保存在配置文件中,并在代码中读取配置文件的值进行发送。同时也可以考虑使用加密方式保存密码,如使用python-dotenv库读取加密的配置文件。
