diff --git a/Dockerfile b/Dockerfile index 864f52e..4f848d8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ FROM python:3.7-slim-buster COPY . . RUN apt-get update \ - && apt-get install -y --no-install-recommends gcc openssh-client python-dev libmagic-dev \ + && apt-get install -y --no-install-recommends gcc openssh-client python-dev libmagic-dev rsync\ && rm -rf /var/lib/apt/lists/* \ && pip install -r requirements.txt \ && apt-get purge -y --auto-remove gcc python-dev diff --git a/ftpSummaryStatsScript/ftp_sync.py b/ftpSummaryStatsScript/ftp_sync.py index d84092e..2a9a9c4 100755 --- a/ftpSummaryStatsScript/ftp_sync.py +++ b/ftpSummaryStatsScript/ftp_sync.py @@ -10,6 +10,8 @@ from pathlib import Path import logging import shutil +import smtplib +from email.message import EmailMessage logging.basicConfig( @@ -235,13 +237,17 @@ def remove_unexepcted_from_ftp(self): self.move_study_from_ftp_to_staging(study) -def sendEmailReport(logs, emailAddresses): +def sendEmailReport(logs, emailFrom, emailTo): try: with open(logs, 'r') as f: - report = f.read() - mailBody = 'Subject: Summary Stats release report\nTo: {}\n{}'.format(emailAddresses,report) - p = Popen(["sendmail", "-t", "-oi", emailAddresses], stdin=PIPE) - p.communicate(mailBody.encode('utf-8')) + msg = EmailMessage() + msg.set_content(f.read()) + msg['Subject'] = 'Summary Stats release report' + msg['From'] = emailFrom + msg['To'] = emailTo + s = smtplib.SMTP('localhost') + s.send_message(msg) + s.quit() except OSError as e: logger.error(e) @@ -253,6 +259,7 @@ def main(): parser.add_argument('--apiURL', type=str, help='URL base for curation REST API') parser.add_argument('--test', action='store_true', help='If test run is specified, no release is done just send notification.') parser.add_argument('--emailRecipient', type=str, help='Email address where the notification is sent.') + parser.add_argument('--emailFrom', type=str, help='Email address where the notification is from.') args = parser.parse_args() logger.info("============ FTP sync report =============") sumstats_sync = SummaryStatsSync(staging_path = args.stagingDir, @@ -274,7 +281,7 @@ def main(): logger.info("==========================================") logger.info("Unexpected on staging: {}".format(list(sumstats_sync.unexpected_on_staging))) logger.info("==========================================") - sendEmailReport("ftpsync.log", args.emailRecipient) + sendEmailReport("ftpsync.log", emailFrom=args.emailFrom, emailTo=args.emailRecipient) if __name__ == '__main__':