Dzień dobry,
Proszę o pomoc. Nie umiem programować.
Poniższy program wysyła tylko e-mail do pierwszego adresu z listy (plik test.txt) [email protected]. Kolejny odbiorca nie otrzymuje żadnego e-maila.
Jak zmodyfikować program, aby wysyłał e-maile do wszystkich adresów wpisanych w pliku test.txt ?
plik test.txt
katalog_test,[email protected]; [email protected];
plik test.conf
adress_file = /home/test/test.txt
plik test.py
import os
from os.path import join, getsize
import sys
import smtplib
import glob
import fnmatch
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
from email import Charset
import time
import logging
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('/home/test/test.conf')
adres_serwera = config.get('serwer', 'adres_serwera')
logdir = config.get('log', 'logdir')
mail_from = config.get('mail', 'mail_nadawcy')
mail_password = config.get('mail', 'mail_haslo')
mail_temat_test = config.get('mail', 'mail_temat_test')
mail_tekst = config.get('mail', 'mail_tekst')
przedst = config.get('kontr', 'adress_file')
home_dir = config.get('kontr', 'home_dir')
'''print adres_serwera
print logdir
print mail_password
print mail_from
print mail_temat
print mail_tekst
print kontr'''
dzisiaj = time.strftime('%Y%m%d')
wiersz = []
fp = open(mail_tekst, 'rb')
mail_tekst = fp.read().
fp.close()
logfile = dzisiaj+"_list.log"
if not os.path.exists(logdir):
os.mkdir(logdir)
logfile = logdir+logfile
if not os.path.exists(logfile):
print "NIE MA PLIKU LOGOW, tworze plik".
logging.basicConfig(format='%(asctime)s %(levelname)s: %(message)s', filename=logfile, filemode='w', level=logging.DEBUG)
else:.
logging.basicConfig(format='%(asctime)s %(levelname)s: %(message)s', filename=logfile, filemode='a', level=logging.DEBUG)
s = smtplib.SMTP_SSL()
s.connect(adres_serwera,465)
s.login(mail_from, mail_password)
def sendMail(to, subject, text, files=[],server=adres_serwera):
assert type(to)==list
assert type(files)==list
msg = MIMEMultipart()
msg['From'] = mail_from
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text, 'plain', 'UTF-8'))
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)
s.sendmail(mail_from, to, msg.as_string() )
file = open(przedst, "r")
for nr,line in enumerate(file):
line = line.strip()
string = line
if line:
wiersz.append(line)
folder, mail = wiersz[nr].split(",")
print mail
for path, dirs, files in os.walk(home_dir+folder):
print path, files
pliki = []
pliki.append(path)
lista_plikow=[]
for plik in files:
if plik.startswith(("XX", "XY")):
plik = pliki[0]+os.sep+plik
lista_plikow.append(plik)
print lista_plikow
if len(lista_plikow) == 0:
temat = 0
elif len(lista_plikow) == 1:.
try:
sendMail([mail], mail_temat_test, mail_tekst ,lista_plikow)
except smtplib.SMTPConnectError, komunikat:
logging.warning(komunikat)
except smtplib.SMTPAuthenticationError, komunikat:
logging.warning(komunikat)
except smtplib.SMTPRecipientsRefused, komunikat:
logging.warning(komunikat)
except smtplib.SMTPResponseException, komunikat:
logging.warning(komunikat)
else:
for plik in lista_plikow:
to_log = "wyslano wiadomosc do: "+mail+" z plikiem "+plik
print to_log
else:.
try:
sendMail([mail], mail_temat_test, mail_tekst ,lista_plikow)
except smtplib.SMTPConnectError, komunikat:
logging.warning(komunikat)
except smtplib.SMTPAuthenticationError, komunikat:
logging.warning(komunikat)
except smtplib.SMTPRecipientsRefused, komunikat:
logging.warning(komunikat)
except smtplib.SMTPResponseException, komunikat:
logging.warning(komunikat)
else:
for plik in lista_plikow:
to_log = "wyslano wiadomosc do: "+mail+" z plikiem "+plik
print to_log
s.close()