def _read_and_process_data(templateHelper): """ Reading file csv, before an file with success """ sender = Sender(config, templateHelper) name_file_data_email = config.name_file_data_email with open("../data/input/{}".format(name_file_data_email)) as csv_file: csv_reader = csv.reader(csv_file, delimiter=';') line_count = 0 name_file_working = _create_name_file_working(name_file_data_email) with open('../data/working/{}'.format(name_file_working), mode='w', newline='') as csv_file_writer: writer = csv.DictWriter(csv_file_writer, fieldnames=Client.columns_name(), delimiter=";") writer.writeheader() client_dict = {} value = '' numRows = _get_lines_csv_reader(name_file_data_email) for row in csv_reader: if line_count > 0: client = _get_client(row) if client.state != StateClient.ACTIVE.value: logger.debug( 'mail to {} <{}> not send but the state is {}'. format(client.contact, client.email, client.state)) value = '--' else: try: sender.sendMessage(client) except SendMailException as sEx: logger.fatal(sEx) raise except smtplib.SMTPRecipientsRefused as rR: logger.error(rR) value = 'KO' except IOError as e: logger.error(e) sys.exit(1) # Not found template except: logger.error( "Problem sending email for client : {} ". format(client.to_string())) value = 'KO' else: logger.debug( 'mail to {} <{}> successfully send success'. format(client.contact, client.email)) value = 'OK' client_dict = client.to_dict() client_dict['result'] = value writer.writerow(client_dict) p.calculateAndUpdate(line_count, numRows) line_count += 1 logger.info(f'Processed {line_count - 1} mails.') _move_file_to_processed_directory(name_file_working, templateHelper.name_template)