2
다음 Python 스크립트를 사용하여 Gmail을 통해 첨부 파일을 보냈습니다. 그러나 그것은 python 스크립트가 저장된 동일한 폴더에 저장된 첨부 파일을 보내는 데 사용될 수 있습니다. 다른 폴더에 저장된 첨부 파일을 보내려고합니다. 이 스크립트를 수정하여 어떻게 할 수 있습니까? 고맙습니다. 당신이 subdir/file1.zip
당신이 스크립트를 호출 경로를 기준으로Python 스크립트를 사용하여 첨부 파일 보내기
sendMail(["[email protected]"],
"Subject",
"Dear sir..",
["subdir/file1.zip", "subdirfile.zip"])
반면 : 예컨대 할 수 있도록
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])
질문은 스크립트의 작업 디렉토리 외부로 파일을 보내는 것에 대해 질문합니다. 답안에 절대 경로를 포함시키는 것을 고려하십시오. –
서브 디렉토리로 "다른 폴더"를 가져 왔지만, 물론 다른 곳에서도 사용할 수 있습니다. 힌트를 주셔서 감사합니다. – hansaplast