Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Example Email Operator Usage with Attachment
from airflow.models import DAG
from airflow.operators.email_operator import EmailOperator
from airflow.operators.python_operator import PythonOperator
from datetime import datetime
from tempfile import NamedTemporaryFile
dag = DAG(
"email_example",
description="Sample Email Example with File attachments",
schedule_interval="@daily",
start_date=datetime(2018, 12, 7),
catchup=False,
)
def build_email(**context):
with NamedTemporaryFile(mode='w+', suffix=".txt") as file:
file.write("Hello World")
email_op = EmailOperator(
task_id='send_email',
to="hello@example.com",
subject="Test Email Please Ignore",
html_content=None,
files=[file.name],
)
email_op.execute(context)
email_op_python = PythonOperator(
task_id="python_send_email", python_callable=build_email, provide_context=True, dag=dag
)
@touseefzaki
Copy link

touseefzaki commented Feb 25, 2020

when I try to use the EmailOperator, I am getting below error
ERROR - No module named 'email_backend = airflow'

May I know What I am missing in my implementation

@Welt0n
Copy link

Welt0n commented Mar 8, 2021

@touseefzaki
You probably need to config it in airflow.cfg, it is in your airflow_home directory

@srivallivagdevi
Copy link

srivallivagdevi commented Apr 20, 2021

What are the configuration changes that are to be done? No errors and no mail

@nandhan2047
Copy link

nandhan2047 commented Jun 2, 2021

what is the alternate for this as EmailOperator is gone now.

@mmunarriz
Copy link

mmunarriz commented Jul 6, 2021

PendingDeprecationWarning: Fetching SMTP credentials from configuration variables will be deprecated in a future release. Please set credentials using a connection instead.

@novadejamesng
Copy link

novadejamesng commented Mar 25, 2022

In airflow.cfg, use this:
email_backend = airflow.utils.email.send_email_smtp
so that you can use this:
from airflow.operators.email_operator import EmailOperator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment