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

使用Pythonsend_mail()函数发送带附件的电子邮件

发布时间:2024-01-10 10:22:08

发送带附件的电子邮件可以使用Python的smtplib模块进行操作。该模块提供了一个名为SMTP的类,可以用于与SMTP服务器进行通信并发送邮件。下面是一个使用Pythonsend_mail()函数发送带附件的电子邮件的例子:

首先,需要导入smtplib、Email(用于构建邮件)和MIME(用于处理附件)模块:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

然后,定义send_mail()函数,它将接收邮件发送相关的参数,例如发件人,收件人,主题,正文和附件文件路径:

def send_mail(from_email, to_emails, subject, body, attachment_path):
    # 创建一个邮件对象
    msg = MIMEMultipart()

    # 设置邮件的发件人、收件人和主题
    msg['From'] = from_email
    msg['To'] = ','.join(to_emails)
    msg['Subject'] = subject

    # 添加正文到邮件对象
    msg.attach(MIMEText(body, 'plain'))

    # 添加附件到邮件对象
    attachment = open(attachment_path, 'rb')
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment; filename= ' + attachment_path.split('/')[-1])
    msg.attach(part)

    # 连接到SMTP服务器并发送邮件
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(from_email, 'your_password')
    server.sendmail(from_email, to_emails, msg.as_string())
    server.quit()

在上述代码中,我们通过MIMEMultipart()创建了一个邮件对象,并设置了发件人、收件人和主题。然后,我们使用MIMEText()将正文添加到邮件对象中,并使用MIMEBase()、encoders.encode_base64()和add_header()将附件添加到邮件对象中。

最后,我们使用SMTP()类连接到SMTP服务器(以Gmail为例)并发送邮件。请确保将smtp.gmail.com替换为您的SMTP服务器地址,将587替换为SMTP服务器的端口,from_emailyour_password替换为您的发件人邮箱和密码。

现在,我们可以调用send_mail()函数尝试发送带附件的电子邮件:

from_email = 'your_email@gmail.com'
to_emails = ['recipient1@example.com', 'recipient2@example.com']
subject = 'Test Email'
body = 'This is a test email with attachment.'
attachment_path = '/path/to/attachment.pdf'

send_mail(from_email, to_emails, subject, body, attachment_path)

在上述代码中,我们将发件人邮箱、收件人邮箱、主题、正文和附件文件路径作为参数传递给send_mail()函数。

注意事项:

1. 在使用Gmail发送邮件时,需要先开启SMTP服务和IMAP服务,可以在Gmail的设置中进行配置。

2. 需要确保附件文件路径是正确的,并且有读取权限。

这是一个使用Python发送带附件的电子邮件的示例。您可以根据实际需求进行修改和扩展。希望对您有所帮助!