Hi Everyone I tried to run the following DAG in order to sent an email using docker and Airflow in a windows environment:
from airflow.operators.email import EmailOperator
from datetime import datetime, timedelta
from airflow import DAG
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'email': ['airflow@example.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5)
}
with DAG(
'email_tutorial',
default_args=default_args,
description='A simple email ',
schedule_interval=timedelta(days=1),
start_date=datetime(2022,9,5),
catchup=False
) as dag:
send_email_notification= EmailOperator(
task_id="send_test_email",
to= "aileddelacruzpaez@gmail.com",
subject="Test email",
html_content="<h2>this is test email"
)
I did the modifications in the docker-compose.yaml file like this:
volumes:
- ./dags:/opt/airflow/dags
- ./logs:/opt/airflow/logs
- ./plugins:/opt/airflow/plugins
- ./input_files:/opt/airflow/input_files
- ./output_files:/opt/airflow/output_files
- ./config:/opt/airflow
And I already did the modifications in the airflow.cfg file using my password gmail account and an app password created but in any case is not working
[smtp]
# If you want airflow to send emails on retries, failure, and you want to use
# the airflow.utils.email.send_email_smtp function, you have to configure an
# smtp server here
smtp_host = smtp.gmail.com
smtp_starttls = True
smtp_ssl = False
# Example: smtp_user = airflow
smtp_user = davidbustosusta@gmail.com
# Example: smtp_password = airflow
smtp_password = XXXXXXXXXXXXXXXXXXX
smtp_port = 587
smtp_mail_from = davidbustosusta@gmail.com
smtp_timeout = 30
smtp_retry_limit = 5
This is the error what I am getting reviewing the Logs in airflow:
[2022-09-06, 14:17:06 UTC] {taskinstance.py:1700} ERROR - Task failed with exception
Traceback (most recent call last):
File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1329, in _run_raw_task
self._execute_task_with_callbacks(context)
File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1455, in _execute_task_with_callbacks
result = self._execute_task(context, self.task)
File "/home/airflow/.local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1511, in _execute_task
result = execute_callable(context=context)
File "/home/airflow/.local/lib/python3.7/site-packages/airflow/operators/email.py", line 88, in execute
conn_id=self.conn_id,
File "/home/airflow/.local/lib/python3.7/site-packages/airflow/utils/email.py", line 66, in send_email
**kwargs,
File "/home/airflow/.local/lib/python3.7/site-packages/airflow/utils/email.py", line 102, in send_email_smtp
send_mime_email(e_from=smtp_mail_from, e_to=recipients, mime_msg=msg, conn_id=conn_id, dryrun=dryrun)
File "/home/airflow/.local/lib/python3.7/site-packages/airflow/utils/email.py", line 210, in send_mime_email
conn = _get_smtp_connection(smtp_host, smtp_port, smtp_timeout, smtp_ssl)
File "/home/airflow/.local/lib/python3.7/site-packages/airflow/utils/email.py", line 244, in _get_smtp_connection
else smtplib.SMTP(host=host, port=port, timeout=timeout)
File "/usr/local/lib/python3.7/smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
File "/usr/local/lib/python3.7/smtplib.py", line 336, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/local/lib/python3.7/smtplib.py", line 307, in _get_socket
self.source_address)
File "/usr/local/lib/python3.7/socket.py", line 728, in create_connection
raise err
File "/usr/local/lib/python3.7/socket.py", line 716, in create_connection
sock.connect(sa)
OSError: [Errno 99] Cannot assign requested address
Does anyone know how to solve this?
Thanks in advance