使用email.mime.baseMIMEBase()在Python中创建带附件的电子邮件
发布时间:2024-01-04 05:36:03
在Python中,使用email.mime.base.MIMEBase()可以创建带有附件的电子邮件。以下是一个示例:
首先,我们导入必要的模块:
import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.base import MIMEBase from email import encoders
接下来,我们定义发送邮件的函数:
def send_email_with_attachment(sender_email, sender_password, receiver_email, subject, message, attachment_file):
# 创建邮件对象
email_message = MIMEMultipart()
email_message['From'] = sender_email
email_message['To'] = receiver_email
email_message['Subject'] = subject
# 添加正文
email_message.attach(MIMEText(message, 'plain'))
# 添加附件
attachment = open(attachment_file, 'rb')
mime_attachment = MIMEBase('application', 'octet-stream')
mime_attachment.set_payload((attachment).read())
encoders.encode_base64(mime_attachment)
mime_attachment.add_header('Content-Disposition', "attachment; filename= %s" % attachment_file)
email_message.attach(mime_attachment)
# 发送邮件
smtp_server = smtplib.SMTP('smtp.gmail.com', 587)
smtp_server.starttls()
smtp_server.login(sender_email, sender_password)
smtp_server.send_message(email_message)
smtp_server.quit()
在以上代码中,我们使用了smtplib模块来实现SMTP发送邮件的功能。
我们首先创建一个MIMEMultipart对象,用于构造多部分邮件(包括正文和附件)。
然后,我们使用MIMEText类将正文添加到邮件对象中。
接下来,我们使用MIMEBase类来创建附件对象,并将附件数据读取,并编码为base64格式。
我们再次使用MIMEBase对象的add_header()方法来设置附件的文件名和Content-Disposition。
最后,我们使用smtplib模块的SMTP类来连接SMTP服务器,登录到发件人的邮箱,并发送邮件。
现在,我们可以使用以上函数来发送带有附件的电子邮件:
sender_email = 'sender@gmail.com' sender_password = 'password' receiver_email = 'receiver@gmail.com' subject = 'Attachment Test' message = 'This email contains an attachment.' attachment_file = 'attachment.jpg' send_email_with_attachment(sender_email, sender_password, receiver_email, subject, message, attachment_file)
在以上示例中,我们指定了发件人的邮箱地址、密码,收件人的邮箱地址,邮件的主题,正文内容以及附件的文件名。然后,我们调用send_email_with_attachment函数来发送邮件。
注意:在实际使用中,需要将发件人的邮箱地址和密码替换为真实的值,并确保可以访问SMTP服务器。并且,确保附件文件存在于指定的路径中。
希望以上示例对你有帮助!
