2017-01-24 13 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

関連する問題