欢迎访问宙启技术站
智能推送

使用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服务器。并且,确保附件文件存在于指定的路径中。

希望以上示例对你有帮助!