diff --git a/.hb.yaml b/.hb.yaml index 046af05..5d8744c 100644 --- a/.hb.yaml +++ b/.hb.yaml @@ -25,3 +25,7 @@ pushover_user: "uDhH33UjQQDYtNzJb1ThRiWb9ingGK" pushsrv: "pushover" dyndomains: {"wrede.org"} +smtpserver: "smtp.fastmail.com" +smtpuser: "andreas@wrede.ca" +smtppassword: "pvtvefyp5gbhnch2" +smtpport: 587 diff --git a/hbd/config.py b/hbd/config.py index c34b2bf..103b701 100644 --- a/hbd/config.py +++ b/hbd/config.py @@ -27,6 +27,11 @@ DEFAULTS = { "foreground": False, "verbose": False, "debug": 0, + "smtpserver": "smtp.fastmail.com", + "smtpuser": "andreas@wrede.ca", + "smtppassword": "pvtvefyp5gbhnch2", + "smtpport": 587 + } diff --git a/hbd/notify.py b/hbd/notify.py index 39e7f17..7b43ed1 100644 --- a/hbd/notify.py +++ b/hbd/notify.py @@ -24,9 +24,17 @@ def setup(cfg: dict): def send_email(aemail, smtpserver, sender, subject, body, debug=0): """Send a plain email via SMTP. Returns True on success.""" try: - server = smtplib.SMTP(smtpserver) + smtpport = _config.get("smtpport", 587) + server = smtplib.SMTP(smtpserver, smtpport)) if debug > 0: server.set_debuglevel(1) + if smtpport == 587: + server.starttls() + server.ehlo() + smtpuser = _config.get("smtpuser", None) + smtppassword = _config.get("smtp_password", None) + if smtpuser and smtppassword: + server.login(smtpuser, smtppassword) server.sendmail(sender, aemail, body) except Exception as e: logger.warning("email send failed: %s", e) @@ -50,7 +58,7 @@ def email(subject: str, msg: str, debug: int = 0) -> bool: """ toaddrs = _config.get("AEMAIL") or _config.get("aemail") or _config.get("email_to") or [] fromemail = _config.get("fromemail") or _config.get("sender") or f"aew.heartbeat@{_config.get('domain','local') }" - smtpserver = _config.get("SMTPSERVER") or _config.get("smtpserver") or _config.get("SMTPSERVER", "localhost") + smtpserver = _config.get("smtpserver") or _config.get("SMTPSERVER", "localhost") date = time.strftime("%a, %d %b %Y %H:%M:%S %z", time.localtime()) body = "To: %s\nFrom: %s\nSubject: %s\nDate: %s\n\n%s" % ( toaddrs[0] if toaddrs else "",