Hi,
I need to send failure notifications from composer DAGs. I have created an app password for gmail smtp. Following is the composer config override configuration. I created the password in secret manager.
smtp | smtp_port | 587 |
| smtp_timeout | 30 |
| smtp_mail_from | h******@gmail.com |
| smtp_host | smtp.gmail.com |
| smtp_starttls | True |
| smtp_ssl | False |
| smtp_retry_limit | 5 |
| smtp_user | h******@gmail.com |
| smtp_password_secret | smtp-password |
email_backend | airflow.utils.email.send_email_smtp | |
|
|
|
I am getting the following error after running the DAG
Error
2022-02-01T15:23:27.361324593Z
airflow-worker (530, b'5.7.0 Authentication Required. Learn more at\n5.7.0 https://support.google.com/mail/?p=WantAuthError mv10sm3097322pjb.45 - gsmtp', 'h*******@gmail.com')
textPayload
(530, b'5.7.0 Authentication Required. Learn more at\n5.7.0 https://support.google.com/mail/?p=WantAuthError mv10sm3097322pjb.45 - gsmtp', 'h****@gmail.com')
However, when I run the following python code, it sends the email successfully
import smtplib, ssl
smtp_server = "smtp.gmail.com"
port = 25#587# For starttls
sender_email = "h***@gmail.com"
receiver_email = "h***@gmail.com"
password = "******"#input("Type your password and press enter: ")
message = "hello"
# Create a secure SSL context
context = ssl.create_default_context()
# Try to log in to server and send email
try:
with smtplib.SMTP(smtp_server, port) as server:
server = smtplib.SMTP(smtp_server,port)
server.ehlo() # Can be omitted
server.starttls(context=context) # Secure the connection
server.ehlo() # Can be omitted
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, message)
# TODO: Send email here
except Exception as e:
# Print any error messages to stdout
print(e)
finally:
server.quit()
I tried all possible changes I could think of, deleting secret and editing the airflow.cfg directly to set the smtp config, changing values of config each, but nothing helped . Would appreciate any help, as I am completely stuck on this.
Hello
If you could modify the entry smtp_password_cmd with the value "gcloud secrets versions access latest --secret=airflow-config-smtp-password" and that way the airflow.cfg will take the value for the variable smtp_password.
i.e [smtp_password_cmd = gcloud secrets versions access latest --secret=airflow-config-smtp-password]