2017-09-26 22 views
0

定義済みのパスに複数のファイルが含まれており、使用可能な各txtファイルごとに電子メールを生成しようとしています。 以下のコードは一度だけ動作しますが、各電子メールごとにインクリメントします。pythonの各txtファイルの添付ファイルの電子メールを送信する

あなたのご意見やご提案は本当に役に立ちます。 感謝、 AL

#!/usr/bin/python 
import sys, os, shutil, time, fnmatch 
import distutils.dir_util 
import distutils.util 
import glob 
from os.path import join, getsize 
from email.mime.multipart import MIMEMultipart 
from email.mime.application import MIMEApplication 


# Import smtplib for the actual sending function 
import smtplib 
import base64 

# For guessing MIME type 
import mimetypes 

# Import the email modules we'll need 
import email 
import email.mime.application 


sourceFolder = "/root/email_python/" 
destinationFolder = r'/root/email_python/sent' 

# Create a text/plain message 
msg=email.mime.Multipart.MIMEMultipart() 
#msg['Subject'] = ' 
msg['From'] = '[email protected]' 
msg['To'] = '[email protected]' 

# The main body is just another attachment 
# body = email.mime.Text.MIMEText("""Email message body (if any) goes  here!""") 
# msg.attach(body) 


#To check if the directory is empty. 
#If directory is empty program exits and no email/file copy operations are carried out 
if os.listdir(sourceFolder) ==[]: 
    print "No attachment today" 
else: 

     for iFiles in glob.glob('*.txt'): 
     print (iFiles) 
    print "The current location of the file is " +(iFiles) 

    part = MIMEApplication(open(iFiles).read()) 
    part.add_header('Content-Disposition', 
      'attachment; filename="%s"' % os.path.basename(iFiles)) 
    shutil.move(iFiles, destinationFolder) 
    msg.attach(part) 
    #shutil.move(iFiles, destinationFolder) 
    #Mail trigger module 
    server = smtplib.SMTP('IP:25') 
    server.sendmail('[email protected]',['[email protected]'], msg.as_string()) 
    server.quit() 
    print "Email successfully sent!" 
    print "Files moved successfully" 

print "done" 
+0

コードのインデントを確認できますか? – strippenzieher

答えて

1

この問題は、ここで発生する:

msg.attach(part) 

あなたは何をしているのは、以前に付け部品を清掃することなく、部品を次々に取り付けています。

以前に接続された部分を破棄するか、msgを再初期化する必要があります。実際には、msgを再初期化する方が簡単です。

# ... code before 

msg=email.mime.Multipart.MIMEMultipart() 
#msg['Subject'] = ' 
msg['From'] = '[email protected]' 
msg['To'] = '[email protected]' 

part = MIMEApplication(open(iFiles).read()) 
part.add_header('Content-Disposition', 
       'attachment; filename="%s"' % os.path.basename(iFiles)) 
shutil.move(iFiles, destinationFolder) 

# ... code after 
+0

ありがとうございます。それをループに含めてそれを並べ替えます。 – user2335924

関連する問題