diff --git a/script/send-mail/customize.py b/script/send-mail/customize.py index 9a2089594..d561f8466 100644 --- a/script/send-mail/customize.py +++ b/script/send-mail/customize.py @@ -11,29 +11,28 @@ def preprocess(i): os_info = i['os_info'] # Start constructing the argument string - args = f"--subject \"{env.get('MLC_EMAIL_SUBJECT', '')}\" " + args = f"--subject '{env.get('MLC_EMAIL_SUBJECT', '')}' " # Process other arguments - args += f"--to_addresses \"{','.join(env.get('MLC_TO_ADDRESS', []))}\" " - args += f"--cc_addresses \"{env.get('MLC_CC_ADDRESS', '')}\" " - args += f"--bcc_addresses \"{env.get('MLC_BCC_ADDRESS', '')}\" " - args += f"--content_file \"{env.get('MLC_CONTENT_FILE', '')}\" " + args += f"--to_addresses '{env.get('MLC_EMAIL_TO_ADDRESSES', '')}' " + args += f"--cc_addresses '{env.get('MLC_EMAIL_CC_ADDRESSES', '')}' " + args += f"--bcc_addresses '{env.get('MLC_EMAIL_BCC_ADDRESSES', '')}' " + args += f"--content_file '{env.get('MLC_EMAIL_CONTENT_FILE', '')}' " # Process attachments - attachments = ' '.join(env.get('MLC_ATTACHMENTS', '').split()) - args += f"--attachments \"{attachments}\" " + args += f"--attachments '{env.get('MLC_EMAIL_ATTACHMENTS', '')}'" # Add flags for SMTP server, email and password if needed - if env.get('USE_SMTP_SERVER'): + if env.get('MLC_EMAIL_USE_SMTP_SERVER'): args += "--use_smtp_server " - args += f"--email \"{env.get('EMAIL', '')}\" " - args += f"--password \"{env.get('PASSWORD', '')}\" " - args += f"--smtp_server \"{env.get('SMTP_SERVER', '')}\" " + args += f"--email '{env.get('MLC_EMAIL_SMPT_EMAIL', '')}' " + args += f"--password '{env.get('MLC_EMAIL_SMTP_PASSWORD', '')}' " + args += f"--smtp_server '{env.get('MLC_EMAIL_SMTP_SERVER', '')}' " subject = env.get('MLC_EMAIL_SUBJECT', '') - to_address = ",".join(env.get('MLC_TO_ADDRESS', [])) + to_address = ",".join(env.get('MLC_EMAIL_TO_ADDRESS', [])) - env['MLC_RUN_CMD'] = f"""{env['MLC_PYTHON_BIN_WITH_PATH'] {os.path.join(env['MLC_TMP_CURRENT_SCRIPT_PATH'], 'send-email.py')} {args}""" + env['MLC_RUN_CMD'] = f"""{env['MLC_PYTHON_BIN_WITH_PATH']} {os.path.join(env['MLC_TMP_CURRENT_SCRIPT_PATH'], 'send-email.py')} {args}""" return {'return': 0} diff --git a/script/send-mail/meta.yaml b/script/send-mail/meta.yaml index d19dcc15c..72cf19fa3 100644 --- a/script/send-mail/meta.yaml +++ b/script/send-mail/meta.yaml @@ -3,6 +3,10 @@ automation_alias: script automation_uid: 5b4e0237da074764 category: Utils deps: + - tags: get,python + names: + - python + - python3 - tags: get,generic-sys-util,_postfix enable_if_env: MLC_HOST_OS_FLAVOR: @@ -12,7 +16,14 @@ new_state_keys: [] post_deps: [] posthook_deps: [] prehook_deps: [] +input_mapping: + subject: MLC_EMAIL_SUBJECT + to_addresses: MLC_EMAIL_TO_ADDRESSES + to_address: MLC_EMAIL_TO_ADDRESSES + attachments: MLC_EMAIL_ATTACHMENTS + attachment: MLC_EMAIL_ATTACHMENTS tags: -- generic -- template +- send +- mail +- email uid: 5f9b9654ecbe4662 diff --git a/script/send-mail/run.sh b/script/send-mail/run.sh index d191bbd97..99e53cc91 100644 --- a/script/send-mail/run.sh +++ b/script/send-mail/run.sh @@ -14,5 +14,5 @@ function run() { } #Add your run commands here... -MLC_RUN_CMD="${MLC_PYTHON_BIN_WITH_PATH} ${MLC_TMP_CURRENT_SCRIPT_PATH}/send-email.py" + run "$MLC_RUN_CMD" diff --git a/script/send-mail/send-email.py b/script/send-mail/send-email.py index 631b729b8..0bb25f7e2 100644 --- a/script/send-mail/send-email.py +++ b/script/send-mail/send-email.py @@ -16,8 +16,11 @@ def send_email(subject, to_addresses, cc_addresses, bcc_addresses, content_file, bcc_list = bcc_addresses.split(',') attachment_list = attachments.split(',') - with open(content_file, 'r') as file: - email_content = file.read() + if content_file and os.path.exists(content_file): + with open(content_file, 'r') as file: + email_content = file.read() + else: + email_content = '' msg = MIMEMultipart() msg['From'] = email if use_smtp_server else 'localhost' @@ -28,6 +31,9 @@ def send_email(subject, to_addresses, cc_addresses, bcc_addresses, content_file, msg.attach(MIMEText(email_content, 'plain')) for attachment in attachment_list: + if attachment.strip() == '': + continue + with open(attachment, 'rb') as file: part = MIMEBase('application', 'octet-stream') part.set_payload(file.read()) @@ -56,26 +62,35 @@ def send_email(subject, to_addresses, cc_addresses, bcc_addresses, content_file, if __name__ == '__main__': parser = argparse.ArgumentParser( description='Send an email with specified attachments') - parser.add_argument('subject', type=str, help='Email subject') + parser.add_argument('--subject', type=str, help='Email subject') parser.add_argument( - 'to_addresses', + '--to_addresses', type=str, help='To addresses, comma-separated') parser.add_argument( - 'cc_addresses', + '--cc_addresses', type=str, + nargs='?', + default='', help='CC addresses, comma-separated') parser.add_argument( - 'bcc_addresses', + '--bcc_addresses', type=str, + nargs='?', + default='', help='BCC addresses, comma-separated') parser.add_argument( - 'content_file', + '--content_file', type=str, + nargs='?', + default='', help='File containing email content') parser.add_argument( - 'attachments', + '--attachments', type=str, + nargs='?', + default='', + help='Attachments, comma-separated file paths') parser.add_argument( @@ -85,10 +100,14 @@ def send_email(subject, to_addresses, cc_addresses, bcc_addresses, content_file, parser.add_argument( '--email', type=str, + default='', + nargs='?', help='Email address for SMTP server') parser.add_argument( '--password', type=str, + default='', + nargs='?', help='Password for SMTP server') parser.add_argument('--smtp_server', type=str, help='SMTP server address')