2017-01-24 25 views
2

Я использовал следующий скрипт python для отправки вложения через gmail. Но он может быть использован для отправки вложения, которое сохраняется в той же папке. Сохраняется сценарий python. Я хочу отправить вложение, которое сохраняется в другой папке. Как я могу это сделать, изменяя этот скрипт? Спасибо.Отправить вложение с использованием скрипта Python

import smtplib 
from email.MIMEMultipart import MIMEMultipart 
from email.MIMEBase import MIMEBase 
from email.MIMEText import MIMEText 
from email.Utils import COMMASPACE, formatdate 
from email import Encoders 
import os 
import datetime 


smtpUser = ' ' 
smtpPass = ' ' 

toAdd = ' ' 
fromAdd = smtpUser 

today = datetime.date.today() 

subject = 'Data File 01 %s' % today.strftime('%Y %b %d') 
header = 'To :' + toAdd + '\n' + 'From : ' + fromAdd + '\n' + 'Subject : ' + subject + '\n' 
body = 'This is a data file on %s' % today.strftime('%Y %b %d') 

attach = 'Data on %s.csv' % today.strftime('%Y-%m-%d') 

print header 


def sendMail(to, subject, text, files=[]): 
    assert type(to)==list 
    assert type(files)==list 

    msg = MIMEMultipart() 
    msg['From'] = smtpUser 
    msg['To'] = COMMASPACE.join(to) 
    msg['Date'] = formatdate(localtime=True) 
    msg['Subject'] = subject 

    msg.attach(MIMEText(text)) 

    for file in files: 
     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) 

    server = smtplib.SMTP('smtp.gmail.com:587') 
    server.ehlo_or_helo_if_needed() 
    server.starttls() 
    server.ehlo_or_helo_if_needed() 
    server.login(smtpUser,smtpPass) 
    server.sendmail(smtpUser, to, msg.as_string()) 

    print 'Done' 

    server.quit() 


sendMail([toAdd], subject, body, [attach]) 

ответ

3

Четвертый параметр sendMail список имен файлов, так что вы можете сделать, например .:

sendMail(["[email protected]"], 
     "Subject", 
     "Dear sir..", 
     ["subdir/file1.zip", "subdirfile.zip"]) 

тогда subdir/file1.zip является относительно пути, по которому вы звоните сценарий. Если вы хотите обратиться к файлу где-то полностью, используйте /path/to/my/file1.zip, например. /home/user/file1.zip

+1

Вопрос задает вопрос о отправке файлов за пределы рабочего каталога скрипта. Подумайте, включая абсолютные пути в вашем ответе. –

+0

Я взял «другую папку» в качестве субдира, но, конечно, это могло быть где-то совсем другое, спасибо за подсказку – hansaplast

 Смежные вопросы

  • Нет связанных вопросов^_^