Microsoft Azure non dispone di un servizio di consegna delle email. Che tu stia testando applicazioni o sviluppando script in Azure per inviare email, sappi che non è disponibile un servizio di posta elettronica nativo.
La connessione SMTP in uscita tramite la porta 25 è completamente bloccata in Azure. Se sei un cliente aziendale, puoi richiedere di sbloccare la porta 25 per il tuo tenant di Azure. In caso contrario, come puoi inviare email da Azure?
Di solito ci sono due modi per consentire l’invio delle email da Azure: utilizzando un SMTP smart host e richieste API REST. La maggior parte dei servizi di consegna delle email offre sia il metodo SMTP che il metodo API per l’invio delle email. In questo articolo, imparerai come inviare email da Azure al resto del mondo.
Prerequisiti
Questo articolo è una guida pratica e se intendi seguire gli esempi man mano che si procede, ci sono alcuni requisiti che devi soddisfare.
- Un abbonamento Azure. Puoi registrarti per un abbonamento di prova gratuito ad Azure se non ne hai ancora uno.
- Una Macchina Virtuale Azure (VM). Fare riferimento a Crea una macchina virtuale Windows nel portale di Azure per imparare come creare una nuova VM se non ne hai ancora una.
- Windows PowerShell 5.1 o PowerShell 7.1.
- A valid sender email address. Using a free email address domain, such as gmail.com, is not recommended. As much as possible, use a sender email address that uses a domain that you own.
Come scegliere i servizi di posta elettronica da utilizzare con Azure per inviare email
Esistono diversi servizi di posta elettronica basati su cloud disponibili per l’uso. Alcuni dei nomi più importanti sono SendGrid, MailJet e MailGun. Qualunque servizio di posta elettronica si scelga, l’utilizzo per l’invio di email da Azure è simile; indirizzo del server e porta per SMTP e indirizzo del punto di accesso dell’API per il REST.
SendGrid è un esempio di servizio di posta elettronica di terze parti utilizzato in questo articolo. Altri servizi di posta elettronica utilizzati come esempi sono Office 365 SMTP relay e Microsoft Graph API.
Argomento correlato: Quale servizio di posta elettronica Azure scegliere per il 2021
Utilizzo di SendGrid
SendGrid è probabilmente l’opzione di servizio email più popolare per l’invio di email da Azure. Azure e SendGrid sono così popolari perché c’era un piano gratuito con un limite di 25.000 email al mese per i clienti di Azure.
Anche se il piano gratuito non è più offerto nel portale di Azure, come confermato da Microsoft, è possibile iscriversi a una sottoscrizione gratuita con un limite di 100 email al giorno. Avrai quindi accesso al servizio di invio email SMTP di SendGrid o all’API di posta elettronica per inviare email da un’app o una VM di Azure.
Creazione di un account SendGrid
Per utilizzare i servizi di SendGrid è necessario avere prima un account SendGrid. Vai alla pagina di Registrazione e dovresti vedere il modulo come mostrato di seguito. Inserisci il tuo indirizzo email e la password scelta. Poi, accetta i termini e fai clic sul pulsante Crea account.

Nella pagina successiva, devi inserire il tuo nome e le informazioni sulla tua azienda. Devi anche selezionare le opzioni appropriate come il tuo ruolo, il numero di email da inviare al mese e il numero di dipendenti. Poi, fai clic su Inizia.

Quando accedi per la prima volta a SendGrid, potresti ricevere un errore che dice: “Non sei autorizzato a accedere a SendGrid; contatta il supporto.” Quando ciò accade, apri un ticket con il supporto di SendGrid. Potrebbero dover farti alcune domande di verifica prima di sbloccare il tuo accesso.
Ti verrà chiesto di abilitare l’autenticazione a due fattori durante il primo accesso. Assicurati di seguire attentamente le istruzioni.
Creazione di un’identità mittente SendGrid
Dopo aver creato l’account SendGrid, il passo successivo è autorizzare l’identità del mittente. Ci sono due opzioni: autenticare un singolo mittente (ad esempio, [email protected]) o autenticare un intero dominio (ad esempio, dominio.com).
In questo esempio, creerai un’identità di mittente singola che fungerà da indirizzo del mittente. Solo l’indirizzo del mittente verificato sarà autorizzato a inviare messaggi tramite il servizio di SendGrid. Segui le istruzioni di seguito per creare l’identità di mittente singola.
- Nella pagina di Benvenuto, fai clic sul pulsante Crea un Mittente Singolo.

2. Successivamente, nella sezione Crea un Mittente, fornisci tutte le informazioni richieste. I campi obbligatori sono contrassegnati da un asterisco rosso per facilitare il riferimento. Dopo aver inserito i dettagli, fai clic su Crea.

Successivamente vedrai il nuovo indirizzo del mittente elencato nella pagina Verifica Mittente Singolo. Come puoi vedere dall’esempio qui sotto, l’indirizzo non è ancora verificato, come indicato da una X rossa nella colonna VERIFICATO.

3. Per verificare il mittente, individua l’email inviata all’indirizzo del mittente, simile allo screenshot qui sotto. Quindi, fai clic sul pulsante Verifica Mittente Singolo.

L’indirizzo del mittente diventerà verificato. Dovresti vedere una pagina simile a quella mostrata di seguito, che conferma che la verifica del mittente è completa.

Creazione di una chiave API SendGrid
Dopo aver creato l’indirizzo del mittente singolo, diventa disponibile l’interfaccia per creare le chiavi API. Pensa alla chiave API SendGrid come alla password. Senza di essa, il tuo codice non può autenticarsi con il servizio di trasmissione SMTP SendGrid. Segui i passaggi di seguito per creare una nuova chiave API.
- Nel menu a sinistra, fai clic su Impostazioni > Chiavi API. Quindi, fai clic sul pulsante Crea Chiave API nell’angolo in alto a destra della pagina.

2. Viene visualizzato il riquadro Crea Chiave API. Inserisci il nome della chiave API che stai creando. Usa un nome che abbia senso, come “Chiave API di Test Azure”. Successivamente, per semplicità, seleziona Accesso Completo come permesso. Infine, fai clic sul pulsante Crea e Visualizza.

3. Viene mostrata la nuova chiave API. Ora copia e salva il valore della chiave perché non ti verrà mostrato nuovamente. Dopo aver copiato la chiave, fai clic su Fatto.

Invio di un’email da Azure utilizzando il servizio di trasmissione SMTP SendGrid.
Ora hai i componenti necessari (account, mittente e chiave) per utilizzare SendGrid per inviare email di Azure. È il momento di testare se il servizio di invio di posta SMTP di SendGrid funziona. In questa sezione, userai PowerShell per inviare email da una VM di Azure.
Prima di eseguire qualsiasi codice, devi conoscere questi requisiti.
- L’indirizzo del server SMTP di SendGrid è smtp.sendgrid.net.
- Il nome utente utilizzato per l’autenticazione SMTP è sempre apikey.
- La password da utilizzare è il valore della chiave API che hai creato in SendGrid.
- Non utilizzare la porta 25. Utilizza invece la porta 587.
- Solo l’indirizzo del mittente verificato in SendGrid è valido per l’uso come mittente delle tue email. In questo esempio, il mittente autorizzato è [email protected].
Lo script sottostante invierà un’email tramite il relay SMTP di SendGrid. Copia il codice qui sotto e modifica i valori di $sendGridApiKey
, From
, To
e Body
. Quindi, esegui il codice nella tua sessione di PowerShell. Fai riferimento ai commenti per capire cosa fa ogni riga di codice.
La demo qui sotto mostra in tempo reale come appare l’esecuzione del codice sopra in PowerShell.

Per confermare la consegna dell’email, controlla la casella di posta del destinatario per trovare il messaggio di prova che hai inviato. Il risultato sarebbe simile a quello mostrato di seguito. Come puoi vedere, il messaggio è arrivato dall’indirizzo del mittente tramite sendgrid.net.

Correlato: Send-MailMessage: Il modo PowerShell per inviare email
Invio di un’email da Azure utilizzando l’API di SendGrid
Un altro modo per utilizzare SendGrid con Azure per inviare email è utilizzare SendGrid Web API V3. Invece di comunicare con SendGrid tramite SMTP, l’utilizzo dell’API avviene tramite HTTP. La richiesta HTTP viene inviata all’URL del punto di accesso dell’API di SendGrid.
Lo script di esempio PowerShell di seguito utilizza il cmdlet Invoke-RestMethod
per inviare la richiesta di posta elettronica da Azure a SendGrid. Copia il codice e modifica i valori delle variabili $sendGridApiKey
, $fromAddress
, $toAddress
, $mailSubject
e $mailMessage
.
Quando hai finito di aggiornare le variabili, esegui il codice in PowerShell.
Dopo aver eseguito il codice PowerShell sopra, controlla la casella di posta del destinatario e conferma di aver ricevuto il messaggio di prova. L’esempio qui sotto mostra un messaggio di prova inviato con successo da Azure tramite l’API di SendGrid.

Se vuoi saperne di più sull’API Web di SendGrid, visita la pagina V3 Mail Send API.
Utilizzo dell’autenticazione SMTP di Office 365
Un’altra opzione per inviare e-mail da Azure è utilizzare il relay SMTP di Office 365. Questo è possibile solo se la tua organizzazione ha già una sottoscrizione a Exchange Online. Proprio come l’utilizzo di SendGrid come host SMTP intelligente, il relay SMTP di Office 365 richiede l’autenticazione e l’utilizzo solo della porta 587.
Prima di utilizzare il relay SMTP di Office 365, devi conoscere le seguenti condizioni perché funzioni.
- L’indirizzo del mittente deve essere un oggetto destinatario di Exchange Online valido, come una casella di posta o un utente di posta. Tuttavia, se si desidera archiviare i rapporti di non recapito (NDR), utilizzare una casella di posta.
- L’utente di autenticazione deve avere una licenza Exchange Online valida. Solo gli utenti con licenza Exchange Online possono utilizzare il relay SMTP di Office 365.
- Supponiamo che l’utente di autenticazione sia diverso dal mittente. In tal caso, all’utente deve essere assegnato il permesso di invio come per l’account mittente.
- Il metodo di autenticazione utilizzato è base (legacy). Ciò significa che se l’autenticazione di base SMTP è disabilitata nella tua organizzazione o quando Microsoft elimina definitivamente l’autenticazione di base, l’autenticazione SMTP non funzionerà più.
- L’indirizzo del server di relay SMTP è smtp.office365.com, e il numero di porta è 587.
Correlato: Come inviare email con Office 365 Direct Send e PowerShell
Creazione di un indirizzo mittente Office 365
In questo esempio, il mittente e l’utente di autenticazione sono separati. Assicurati di connetterti a Exchange Online PowerShell prima. Una volta connesso, segui i passaggi seguenti.
Crea una casella di posta condivisa utilizzando il comando seguente. Modifica i valori -Name
e -PrimarySMTPAddress
con i valori corretti.
La casella di posta condivisa dovrebbe essere creata e restituirebbe un risultato simile al seguente.

Quindi, assegna il permesso Invia come all’utente di autenticazione. Nell’esempio di seguito, all’utente viene assegnato il permesso Invia come alla mailbox condivisa.
Dopo l’esecuzione del comando sopra, dovresti ottenere un risultato simile a quello di seguito.

Invio di un’email da Azure utilizzando l’invio SMTP di Office 365
Dopo la creazione dell’indirizzo mittente e l’assegnazione del permesso “Invia come”, il passo successivo è testare la consegna dell’email utilizzando PowerShell e l’invio SMTP di Office 365.
Il codice di seguito si autentica utilizzando [email protected]. L’indirizzo [email protected] appare come mittente. Assicurati di assegnare i valori corretti prima di eseguire il codice.
Utilizzare credenziali in script in testo normale non è consigliato. Gli script di produzione devono utilizzare la crittografia delle credenziali o la gestione dei segreti per proteggere nomi utente e password.
Ora è il momento di controllare la mailbox del destinatario. Conferma che il messaggio di test è stato ricevuto.

Utilizzo dell’API Microsoft Graph per inviare email da Azure.
Invece di utilizzare il relay SMTP di Office 365, il modo più sicuro e consigliato è utilizzare Microsoft Graph API. Con Microsoft Graph API, è possibile inviare email da qualsiasi casella di posta nell’organizzazione utilizzando chiamate REST API.
Per utilizzare Microsoft Graph API per inviare email è necessario un app Azure AD registrata. L’app registrata deve essere assegnata con l’autorizzazione API Mail.Send. Le sezioni seguenti mostreranno come configurare Microsoft Graph API e come utilizzarlo per inviare email.
Correlato: Utilizzare Microsoft Graph API con PowerShell
Registrazione di una nuova app in Azure Active Directory
In questa sezione, verrà registrata una nuova app Web nell’Azure Active Directory. La nuova app funge da identità di autenticazione per Microsoft Graph. Accedi al Portale di Azure se non hai effettuato l’accesso.
- Vai su Azure Active Directory —> Registrazione app. Quindi, fai clic sul pulsante Nuova registrazione.

2. Nella pagina Registra un’applicazione, inserisci il nome dell’app.
3. Sotto Tipo di account supportati, scegli Solo account in questa directory organizzativa. Digita HTTP://localhost come URI di reindirizzamento. Infine, clicca sul pulsante Registra.

4. Attendi che la registrazione venga completata. Il processo richiede solo pochi secondi. Non dimenticare di annotare il ID applicazione (client) e il ID directory (tenant) risultanti. Saranno necessari in seguito.

Creazione di una chiave segreta del client
Pensa all’ID dell’applicazione che hai creato nella sezione precedente come l’username. E quell’ID dell’applicazione ha bisogno di una password, che è la chiave segreta.
Per aggiungere una nuova chiave segreta del client, segui i passaggi di seguito.
- Vai a Certificati e segreti, quindi clicca su Nuova chiave segreta del client.
- Inserisci la descrizione per la chiave segreta del client, come chiave1.
- Seleziona quando scade la chiave segreta e clicca su Aggiungi. Nell’esempio seguente, la chiave segreta scade in 1 anno.

Vedrai la nuova chiave elencata nella sezione Chiavi segrete del client. Ora è l’unico momento in cui vedrai il valore della chiave, quindi salva una copia.

Assegnazione delle autorizzazioni API e concessione del consenso dell’amministratore
Ora che hai creato l’ID dell’applicazione e la chiave segreta, l’unico passaggio rimasto è assegnare le autorizzazioni richieste dell’API di Microsoft Graph. Senza assegnare le autorizzazioni, l’applicazione può autenticarsi ma non avrà l’autorità per fare nulla, come inviare email.
Per iniziare ad assegnare le autorizzazioni, segui i passaggi di seguito.
- Fare clic su Permessi API nel menu a sinistra.
2. Quindi, nella pagina Permessi configurati, fare clic sul pulsante Aggiungi un permesso.

3. Nella sezione Richiesta di permessi API, fare clic per selezionare API di Microsoft Graph.

4. Quando viene richiesto di scegliere il tipo di permesso richiesto dall’applicazione, fare clic su Permessi dell’applicazione.
5. Nella casella di ricerca, digitare Mail.Send per cercarlo. Nei risultati, fare clic per selezionare il permesso Mail.Send. Infine, fare clic su Aggiungi permessi.

6. Noterai che lo stato del permesso è “Non concesso per <nome organizzazione>”. A questo punto, tu o un amministratore globale dovete prima concedere il consenso all’applicazione. Per concedere il permesso, fare clic sul pulsante Concedi consenso amministratore per <organizzazione>.

Lo stato del permesso API cambierà quindi in “Concesso per <nome organizzazione>”..

Acquisizione di un token di accesso
Le richieste inviate all’API di Microsoft Graph richiedono un token di accesso. A questo punto, hai già l’ID dell’applicazione, la chiave segreta e l’ID del tenant. Queste tre informazioni sono necessarie per acquisire un token di accesso.
Lo script PowerShell riportato di seguito invia la richiesta di token di accesso al punto di endpoint dell’API di Microsoft Graph. È necessario aggiornare le variabili $client_id
, $client_secret
e $tenant_id
con i valori corretti. Quindi, copiare e incollare il codice in PowerShell per richiedere il token di accesso.
La dimostrazione qui sotto mostra lo script PowerShell sopra in azione. Nota che il token di accesso richiesto viene memorizzato nella variabile $token
.

I token di accesso sono validi solo per un’ora dalla data di acquisizione. Dovrai richiedere un altro token di accesso dopo la scadenza del token precedente.
Invio di un’email da Azure utilizzando l’API di Microsoft Graph
Ora sei pronto per utilizzare l’API di Microsoft Graph con Azure per
# Fornire l'indirizzo email del mittente e del destinatario
$fromAddress = 'SENDER ADDRESS HERE'
$toAddress = 'RECIPIENT ADDRESS HERE'
# Specificare l'oggetto e il messaggio dell'email
$mailSubject = 'This is a test message from Azure via Microsoft Graph API'
$mailMessage = 'This is a test message from Azure via Microsoft Graph API'
# NON MODIFICARE NULLA SOTTO QUESTA LINEA
# Costruisci la richiesta dell'API di Microsoft Graph
$params = @{
"URI" = "https://graph.microsoft.com/v1.0/users/$fromAddress/sendMail"
"Headers" = @{
"Authorization" = ("Bearer {0}" -F $token)
}
"Method" = "POST"
"ContentType" = 'application/json'
"Body" = (@{
"message" = @{
"subject" = $mailSubject
"body" = @{
"contentType" = 'Text'
"content" = $mailMessage
}
"toRecipients" = @(
@{
"emailAddress" = @{
"address" = $toAddress
}
}
)
}
}) | ConvertTo-JSON -Depth 10
}
# Invia il messaggio
Invoke-RestMethod @params -Verbose