如何使用 python 指定新的目录路径以在邮件中添加附件

How to specify a new directory path to add attachment in mail using python

我正在使用以下代码将附件添加到邮件并发送。 在下面的代码中,附加了与脚本位于同一目录中的文件。

我的代码在 'testdir' 文件夹中,要附加的文件在 'testdir/testfiles' 文件夹中。 如何更改下面的目录路径,以便将文件附加到 'testdir/testfiles' 文件夹中。

Code :
import smtplib
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email import Encoders
import os

def send_email(to, subject, text, filenames):
    try:
        gmail_user = 'xxxxx@gmail.com'
        gmail_pwd = 'xxxxx'
        msg = MIMEMultipart()
        msg['From'] = gmail_user
        msg['To'] = ", ".join(to)
        msg['Subject'] = subject
        msg.attach(MIMEText(text))
        for file in filenames:
            part = MIMEBase('application', 'octet-stream')
            part.set_payload(open(file, 'rb').read())
            Encoders.encode_base64(part)
            part.add_header('Content-Disposition', 'attachment; filename="%s"'% os.path.basename(file))
            msg.attach(part)

        mailServer = smtplib.SMTP("smtp.gmail.com:587")
        mailServer.ehlo()
        mailServer.starttls()
        mailServer.ehlo()
        mailServer.login(gmail_user, gmail_pwd)
        mailServer.sendmail(gmail_user, to, msg.as_string())
        mailServer.close()
        print('successfully sent the mail')
    except smtplib.SMTPException,error:
        print str(error)

if __name__ == '__main__':
    attachment_file = ['t2.csv','t1.txt']
    to = "xxxxx@gmail.com"
    TEXT = "Hello everyone"
    SUBJECT = "Testing sending using gmail"
    send_email(to, SUBJECT, TEXT, attachment_file)

我创建了一个新目录 'testfiles' 并将所有文件放入其中,并使用 os.listdir 列出其中的文件。并遍历所有文件并将其附加到邮件中。

将文件附加到邮件的更新代码:

        dir_path = "/home/testdir/testfiles"
        files = os.listdir("testfiles")
        for f in files:  # add files to the message
            file_path = os.path.join(dir_path, f)
            attachment = MIMEApplication(open(file_path, "rb").read(), _subtype="txt")
            attachment.add_header('Content-Disposition', 'attachment', filename=f)
            msg.attach(attachment)