Il 15 settembre 2026, tutti gli ambienti Cloud Composer 1 e Cloud Composer 2 versione 2.0.x raggiungeranno la fine del ciclo di vita pianificata e non potrai più utilizzarli. Ti consigliamo di pianificare la migrazione a Cloud Composer 3.
Questa pagina spiega come configurare i servizi SMTP per il tuo ambiente Cloud Composer.
Prima di iniziare
Se il tuo ambiente Cloud Composer è
configurato per l'IP privato, assicurati che abbia
la connettività all'endpoint API per il tuo servizio email esterno (ad esempio
https://api.sendgrid.com o il tuo server SMTP preferito).
I componenti Airflow negli ambienti IP pubblici stabiliscono connessioni in uscita,
incluso l'invio di messaggi email, da porte e indirizzi IP pubblici allocati automaticamente. Se vuoi che i tuoi ambienti IP pubblico inviino email
da indirizzi IP e porte predeterminati, puoi farlo
collegando una rete VPC al tuo ambiente e
passando all'IP privato. Per ulteriori
informazioni sul networking in Cloud Composer 3, vedi
Modificare il tipo di networking dell'ambiente.
Se configuri un backend email personalizzato diverso, questa configurazione non
verrà propagata allo scheduler. Di conseguenza, l'invio di email direttamente dallo
scheduler comporterebbe la mancata risposta e il ripetuto
malfunzionamento dello scheduler.
I worker di Airflow e i processori DAG supportano altri backend personalizzati, quindi
puoi inviare email da questi componenti. Un caso comune in cui l'email viene inviata
direttamente dallo scheduler sono gli avvisi via email relativi agli errori DAG. Come soluzione alternativa, puoi inviare avvisi di errore DAG tramite un callback registrato. Verranno inviati dal processore DAG. Puoi anche utilizzare altri backend personalizzati con
gli operatori Airflow che inviano email. In questo caso, l'email verrà inviata da
un worker di Airflow che elabora l'attività.
Configurare i servizi email SendGrid
Per ricevere notifiche, configura le variabili di ambiente
per inviare email tramite il servizio email SendGrid.
Registrarsi a SendGrid
Se non l'hai ancora fatto, registrati a SendGrid nella console Google Cloud , fai clic su
Gestisci sul provider per andare al dominio SendGrid e fai clic su Impostazioni per recuperare
il tuo nome utente e creare una chiave API. In qualità di sviluppatore Google Cloud , puoi
iniziare con 12.000 email gratuite al mese.
Configura Secret Manager per il tuo
ambiente. Assicurati di configurare le autorizzazioni e le opzioni di configurazione di Airflow per il backend dei secret.
Esegui l'override delle seguenti opzioni di configurazione di Airflow:
Crea un secret per la connessione SendGrid denominato
airflow-connections-sendgrid_default. Imposta il valore del secret sull'URI di connessione. Ad esempio:
Configura l'indirizzo email per SendGrid. Non è possibile configurare l'indirizzo email tramite un secret. Esegui invece l'override della seguente opzione di configurazione di Airflow:
Sezione
Chiave
Valore
email
from_email
L'indirizzo email Da, ad esempio noreply@example.com.
Memorizzare i valori in Airflow
Esegui l'override delle seguenti opzioni di configurazione di Airflow:
Configura l'indirizzo email per SendGrid. Non è possibile configurare l'indirizzo email tramite un secret. Esegui invece l'override della seguente opzione di configurazione di Airflow:
Sezione
Chiave
Valore
email
from_email
L'indirizzo email Da, ad esempio noreply@example.com.
Testare la configurazione di SendGrid
Per testare la configurazione di SendGrid:
Crea un DAG di test che utilizza EmailOperator. Ad esempio:
importdatetimeimportairflowfromairflow.operators.emailimportEmailOperatorwithairflow.DAG("composer_sample_sendgrid",start_date=datetime.datetime(2022,1,1),)asdag:task_email=EmailOperator(task_id="send-email",conn_id="sendgrid_default",# You can specify more than one recipient with a list.to="user@example.com",subject="EmailOperator test for SendGrid",html_content="This is a test message sent through SendGrid.",dag=dag,)
Carica il DAG nel tuo ambiente e verifica che l'attività vada a buon fine.
Accedi a SendGrid con le tue credenziali SendGrid.
Nell'interfaccia utente di SendGrid, vai alla pagina Attività.
Cerca l'email nell'elenco. Dovresti vedere che SendGrid ha elaborato
e consegnato l'email.
Se l'email non viene elaborata e consegnata:
Controlla la configurazione di SendGrid.
Verifica di aver abilitato il backend Secret Manager. Assicurati
di aver concesso autorizzazioni aggiuntive e impostato gli override per le opzioni di configurazione di Airflow.
Controlla il filtro antispam nel tuo client email.
Configurare servizi SMTP di terze parti
Per inviare email tramite un servizio SMTP di terze parti,
esegui l'override dell'opzione di configurazione di Airflow email_backend
e configura altri parametri correlati a SMTP.
Per configurare un servizio SMTP di terze parti, esegui l'override delle seguenti opzioni di configurazione di Airflow:
Sezione
Chiave
Valore
email
email_backend
airflow.utils.email.send_email_smtp
smtp
smtp_host
Il nome host del server SMTP.
smtp
smtp_user
Il nome utente sul server SMTP.
smtp
smtp_port
La porta per il server SMTP. La porta 25 non è disponibile. Puoi utilizzare altre porte, ad esempio le porte SMTP standard 465 e 587.
smtp
smtp_password
L'impostazione di una password tramite smtp_password non è supportata. Per impostare una password SMTP, segui le istruzioni fornite in Configurazione di una password SMTP.
smtp
smtp_mail_from
L'indirizzo email Da, ad esempio noreply-composer@.
smtp
smtp_starttls
Per una maggiore sicurezza, imposta True.
smtp
smtp_ssl
Per una maggiore sicurezza, imposta True.
Configurare una password SMTP per un servizio SMTP di terze parti
Mantenere una password SMTP in testo normale nel file di configurazione di Airflow è una pratica di sicurezza
sconsigliata. Per questo motivo Cloud Composer non supporta
questo metodo. Puoi invece utilizzare altri due metodi per configurare una password SMTP.
Utilizzo di un comando per recuperare la password SMTP
Puoi utilizzare un override della configurazione per specificare un comando che ottiene la
password SMTP. Quando comunica con il servizio SMTP, Airflow utilizza questo
comando per ottenere il valore della password. Specifica un singolo comando, senza
operatori bash come pipe e reindirizzamenti.
Per utilizzare questo metodo, esegui l'override della seguente opzione di configurazione di Airflow:
Sezione
Chiave
Valore
smtp
smtp_password_cmd
Specifica un comando che restituisce la password SMTP.
Utilizzo di un secret archiviato in Secret Manager per recuperare una password SMTP
Configura Airflow per ottenere la password SMTP da
Secret Manager. A questo scopo, esegui l'override
della seguente opzione di configurazione di Airflow:
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Difficile da capire","hardToUnderstand","thumb-down"],["Informazioni o codice di esempio errati","incorrectInformationOrSampleCode","thumb-down"],["Mancano le informazioni o gli esempi di cui ho bisogno","missingTheInformationSamplesINeed","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-01 UTC."],[[["\u003cp\u003eThis guide provides instructions on configuring SMTP services for Cloud Composer 3 environments, including using SendGrid and third-party SMTP services.\u003c/p\u003e\n"],["\u003cp\u003eFor SendGrid, users can configure email sending by storing the API key and connection details either in Secret Manager, which is recommended, or directly within Airflow, though the latter is less secure.\u003c/p\u003e\n"],["\u003cp\u003ePublic IP environments can send emails from predetermined IP addresses by connecting a VPC network and switching to Private IP.\u003c/p\u003e\n"],["\u003cp\u003eThird-party SMTP services require overriding specific Airflow configuration options, and Cloud Composer supports retrieving the SMTP password securely through either a command or from Secret Manager.\u003c/p\u003e\n"],["\u003cp\u003eTesting the configuration can be done by creating a DAG that utilizes the EmailOperator, and checking if it was successful, along with checking the activity page on the specified email server.\u003c/p\u003e\n"]]],[],null,["# Configure email notifications\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\n**Cloud Composer 3** \\| [Cloud Composer 2](/composer/docs/composer-2/configure-email \"View this page for Cloud Composer 2\") \\| [Cloud Composer 1](/composer/docs/composer-1/configure-email \"View this page for Cloud Composer 1\")\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nThis page explains how to configure SMTP services for your\nCloud Composer environment.\n\nBefore you begin\n----------------\n\n- If your Cloud Composer environment is\n [configured for Private IP](/composer/docs/composer-3/configure-private-ip), make sure that it has\n connectivity to the API endpoint for your external email service (such as\n `https://api.sendgrid.com`, or your preferred SMTP server).\n\n- Airflow components in Public IP environments establish outbound connections,\n including sending email messages, from automatically allocated public IP\n addresses and ports. If you want your Public IP environments to send email\n from predetermined IP addresses and ports, you can do so through\n [connecting a VPC network](/composer/docs/composer-3/connect-vpc-network) to your environment and\n [switching it to Private IP](/composer/docs/composer-3/change-networking-type#about-networking-type). For more\n information about networking in Cloud Composer 3, see\n [Change environment networking type](/composer/docs/composer-3/change-networking-type#about-networking-type).\n\n- The Airflow scheduler in Cloud Composer 3 supports only the following\n [custom email backends](#third-party):\n\n - airflow.providers.sendgrid.utils.emailer.send_email\n - airflow.utils.email.send_email_smtp\n\n If you configure a different custom email backend, this configuration won't\n be propagated to the scheduler. As a result, sending email directly from the\n scheduler would lead to the scheduler becoming unresponsive and repeatedly\n failing.\n\n Airflow workers and DAG processors support other custom backends, so you\n can send email from these components. One common case when email is sent\n directly from the scheduler is email alerts about DAG failures. As a\n workaround, you can send DAG failure alerts\n [through a registered callback](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/callbacks.html) instead. They will be\n sent from the DAG processor. You can also use other custom backends with\n Airflow operators that send email. In this case, email will be sent from\n an Airflow worker that processes the task.\n\nConfigure SendGrid email services\n---------------------------------\n\nTo receive notifications, configure your environment variables\nto send email through the SendGrid email service.\n\n### Sign up with SendGrid\n\nIf you haven't already, sign up with SendGrid in Google Cloud console, click\nManage On Provider to go to the SendGrid domain, and click Settings to retrieve\nyour username and to create an API key. As a Google Cloud developer, you can\nstart with 12,000 free emails per month.\n\n[Go to SendGrid Email API](https://console.cloud.google.com/marketplace/details/sendgrid-app/sendgrid-email)\n\n### Configure variables\n\nSendGrid uses the API key and a From email address for sending mail. You\ncan provide this information with one of the following options:\n\n- (Recommended)\n [Store values in Secret Manager](#store-secret-manager)\n\n- [Store values in Airflow](#store-airflow)\n\n | **Caution:** If you use this option, the value for the SendGrid API key is stored in an Airflow connection.\n\n#### Store values in Secret Manager\n\nTo store values in Secret Manager:\n\n1. [Configure Secret Manager](/composer/docs/composer-3/configure-secret-manager) for your\n environment. Make sure to set up permissions and Airflow configuration\n options for the secrets backend.\n\n2. [Override](/composer/docs/composer-3/override-airflow-configurations) the following Airflow configuration options:\n\n3. Create a secret for the SendGrid connection named\n `airflow-connections-sendgrid_default`. Set the secret's value to the\n connection URI. For example:\n\n sendgrid://\u003cusername\u003e:\u003csendgrid_api_key\u003e@smtp.sendgrid.net:587\n\n For more information about storing connections in\n Secret Manager, see\n [Manage Airflow connections](/composer/docs/composer-3/manage-airflow-connections).\n4. Configure the email address for SendGrid. It's not possible to set up the\n email address through a secret. Instead, [override](/composer/docs/composer-3/override-airflow-configurations) the\n following Airflow configuration option:\n\n#### Store values in Airflow\n\n1. [Override](/composer/docs/composer-3/override-airflow-configurations) the following Airflow configuration options:\n\n2. In Airflow, [configure the connection](/composer/docs/composer-3/manage-airflow-connections)\n named `sendgrid_default`. Specify the Sendgrid API key in the connection\n URI. For example:\n\n gcloud composer environments run \u003cvar translate=\"no\"\u003eENVIRONMENT_NAME\u003c/var\u003e \\\n --location \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e \\\n connections add -- \\\n --conn-uri \"sendgrid://\u003cvar translate=\"no\"\u003eUSERNAME\u003c/var\u003e:\u003cvar translate=\"no\"\u003eSENDGRID_API_KEY\u003c/var\u003e@smtp.sendgrid.net:587\" \\\n sendgrid_default\n\n Replace the following:\n - `ENVIRONMENT_NAME`: the name of your environment.\n - `LOCATION`: the region where the environment is located.\n - `USERNAME`: the SendGrid username.\n - `SENDGRID_API_KEY`: the SendGrid API key.\n3. Configure the email address for SendGrid. It's not possible to set up the\n email address through a secret. Instead, [override](/composer/docs/composer-3/override-airflow-configurations) the\n following Airflow configuration option:\n\n### Test your SendGrid configuration\n\nTo test SendGrid configuration:\n\n1. Create a test DAG that uses the `EmailOperator`. For example:\n\n\n import datetime\n\n import airflow\n from airflow.operators.email import EmailOperator\n\n\n with airflow.DAG(\n \"composer_sample_sendgrid\",\n start_date=datetime.datetime(2022, 1, 1),\n ) as dag:\n task_email = EmailOperator(\n task_id=\"send-email\",\n conn_id=\"sendgrid_default\",\n # You can specify more than one recipient with a list.\n to=\"user@example.com\",\n subject=\"EmailOperator test for SendGrid\",\n html_content=\"This is a test message sent through SendGrid.\",\n dag=dag,\n )\n\n1. [Upload the DAG](/composer/docs/composer-3/manage-dags#add) to your environment and check that the task succeeds.\n2. Sign in to SendGrid in with your SendGrid credentials.\n3. In the SendGrid UI, go to Activity page.\n4. Search the list for the email. You should see that SendGrid processed and delivered the email.\n5. If the email is not processed and delivered:\n\n - Check your SendGrid configuration.\n - Verify that you enabled the Secret Manager backend. Make sure that you granted extra permissions and set overrides for Airflow configuration options.\n - Check the spam filter in your email client.\n\nConfigure third-party SMTP services\n-----------------------------------\n\nTo send email through a third-party SMTP service,\n[override](/composer/docs/composer-3/override-airflow-configurations) the `email_backend` Airflow configuration option\nand configure other SMTP-related parameters.\n| **Note:** Using a third-party SMTP service requires setting an SMTP password. Cloud Composer does not support configuring the `smtp_password` because the value is stored in plain text in `airflow.cfg` and considered non-secure. See [Configuring an SMTP password](#smtp_password) to learn about setting an SMTP password in a more secure way.\n\nTo configure a third-party SMTP service, [override](/composer/docs/composer-3/override-airflow-configurations) the following Airflow configuration options:\n\n### Configure an SMTP password for a third-party SMTP service\n\nKeeping an SMTP password in plain text in Airflow configuration file is a bad\nsecurity practice. That's why Cloud Composer does not support\nthis method. Instead, you can use two other methods for configuring an SMTP\npassword.\n\n#### Using a command to retrieve the SMTP password\n\nYou can use a configuration override to specify a command that obtains the\nSMTP password. When communicating with your SMTP service, Airflow uses this\ncommand to get the value of the password. Specify a single command, without\nbash operators such as pipes and redirects.\n\nTo use this method, [override](/composer/docs/composer-3/override-airflow-configurations) the following Airflow\nconfiguration option:\n\n\n#### Using a secret stored in Secret Manager to retrieve an SMTP password\n\nYou can [configure Secret Manager](/composer/docs/composer-3/configure-secret-manager) as your\nAirflow secrets backend.\n| **Note:** If the `smtp_ssl` Airflow configuration option is set to `True` for your environment, then disable this override if you get the `SSL_WRONG_VERSION_NUMBER` error.\n\nOnce you configure Secret Manager for your Composer\nenvironment, you can store an SMTP password in Secret Manager:\n\n1. Create a new secret:\n\n echo -n \"\u003cvar translate=\"no\"\u003eSMTP_PASSWORD\u003c/var\u003e\" | gcloud beta secrets create \\\n airflow-config-smtp-password \\\n --data-file=- \\\n --replication-policy=automatic\n\n Replace `SMTP_PASSWORD` with your SMTP password.\n2. Configure Airflow to obtain the SMTP password from\n Secret Manager. To do so, [override](/composer/docs/composer-3/override-airflow-configurations)\n the following Airflow configuration option:\n\nWhat's next\n-----------\n\n- [Override Airflow configuration options](/composer/docs/composer-3/override-airflow-configurations)\n- [Set environment variables](/composer/docs/composer-3/set-environment-variables)"]]