Condividi tramite


Guida introduttiva: Inviare un messaggio di posta elettronica con allegati

In questa guida introduttiva si apprenderà come inviare messaggi di posta elettronica con allegati usando gli SDK di posta elettronica.

Per iniziare a usare Servizi di comunicazione di Azure, usare la libreria client di posta elettronica .NET di Servizi di comunicazione per inviare messaggi di posta elettronica.

Suggerimento

Iniziare subito l'esperienza di invio di messaggi di posta elettronica con Servizi di comunicazione di Azure passando direttamente al codice di esempio Invio di messaggi di posta elettronica Basic e Invio di messaggi di posta elettronica Advanced in GitHub.

Informazioni sul modello a oggetti Posta elettronica

Le classi e le interfacce seguenti gestiscono alcune delle principali funzionalità della libreria client di Posta Elettronica di Servizi di comunicazione di Azure per C#.

Nome Descrizione
EmailAddress Questa classe contiene un indirizzo di posta elettronica e un'opzione per un nome visualizzato.
EmailAttachment Questa classe crea un allegato di posta elettronica accettando un ID univoco, una stringa MIME di tipo allegato di posta elettronica, dati binari per il contenuto e un ID contenuto facoltativo da definire come allegato inline.
EmailClient Questa classe è necessaria per tutte le funzionalità della posta elettronica. È possibile crearne un'istanza con la stringa di connessione e usarla per inviare messaggi di posta elettronica.
EmailClientOptions Questa classe può essere aggiunta all'istanza di EmailClient per specificare una versione dell'API come destinazione.
EmailContent Questa classe contiene l'oggetto e il corpo del messaggio di posta elettronica. È necessario specificare almeno un contenuto in testo normale o formato Html
EmailCustomHeader Questa classe consente di aggiungere un nome e una coppia di valori per personalizzare un'intestazione. È possibile anche specificare la priorità tramite le intestazioni usando il nome dell’intestazione 'x-priority' o 'x-msmail-priority'
EmailMessage Questa classe combina il mittente, il contenuto e i destinatari. Facoltativamente, è anche possibile aggiungere intestazioni, allegati e indirizzi di posta elettronica di risposta personalizzati.
EmailRecipients Questa classe contiene elenchi di oggetti EmailAddress per i destinatari del messaggio di posta elettronica, tra cui gli elenchi facoltativi per i destinatari CC e CCN.
EmailSendOperation Questa classe rappresenta l'operazione di invio di posta elettronica asincrona e viene restituita dalla chiamata API di invio tramite posta elettronica.
EmailSendResult Questa classe contiene i risultati dell'operazione di invio tramite posta elettronica. Include un ID operazione, lo stato dell'operazione e l'oggetto dell’errore (se applicabile).

EmailSendResult restituisce lo stato seguente nell'operazione di completamento dell’invio di posta elettronica.

Stato Descrizione
NotStarted Questo stato non viene attualmente inviato dal servizio.
In esecuzione L'operazione di invio di posta elettronica è attualmente in corso ed è in corso l'elaborazione.
Completato L'operazione di invio tramite posta elettronica è stata completata senza errori e il messaggio di posta elettronica è in uscita per il recapito. È possibile ottenere qualsiasi stato dettagliato relativo al recapito della posta elettronica oltre questa fase tramite Monitoraggio di Azure o Griglia di eventi di Azure. Informazioni su come abbonarsi a eventi di posta elettronica
Non riuscito L'operazione di invio della posta elettronica non è riuscita e si è verificato un errore. Il messaggio di posta elettronica non è stato inviato. Il risultato contiene un oggetto errore con altri dettagli sul motivo dell'errore.

Prerequisiti

L’esecuzione delle procedure illustrate in questa guida introduttiva comportano l'addebito di qualche centesimo (USD) o meno nell'account Azure.

Nota

È anche possibile inviare un messaggio di posta elettronica dal proprio dominio verificato. Aggiungere domini verificati personalizzati a Servizio di comunicazione tramite posta elettronica.

Controllo dei prerequisiti

  • In una finestra del terminale o di comando eseguire il comando dotnet per verificare se la libreria client .NET è installata.
  • Per visualizzare i sottodomini associati alla risorsa di Servizio di comunicazione tramite posta elettronica, accedere al portale di Azure, individuare la risorsa di Servizi di comunicazione tramite posta elettronica e aprire la scheda Domini precedenti nel riquadro di spostamento sinistro.

Creare una nuova applicazione C#

In una finestra di una console, ad esempio cmd, PowerShell o Bash, usare il comando dotnet new per creare una nuova app console con il nome EmailQuickstart. Questo comando crea un semplice progetto C# "Hello World" con un singolo file di origine: Program.cs.

dotnet new console -o EmailQuickstart

Passare alla cartella dell'app appena creata e usare il comando dotnet build per compilare l'applicazione.

cd EmailQuickstart
dotnet build

Installare il pacchetto

Sempre all’interno della directory dell'applicazione, installare il pacchetto della libreria client Posta elettronica di Servizi di comunicazione di Azure per .NET usando il comando dotnet add package.

dotnet add package Azure.Communication.Email

Creare il client di posta elettronica con autenticazione

Aprire Program.cs e sostituire il codice esistente con il codice seguente per aggiungere le direttive using per includere lo spazio dei nomi e un punto di partenza per l'esecuzione di Azure.Communication.Email per il programma.


using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

using Azure;
using Azure.Communication.Email;

namespace SendEmail
{
  internal class Program
  {
    static async Task Main(string[] args)
    {

    }
  }
}

Sono disponibili alcune opzioni diverse per l'autenticazione di un client di posta elettronica:

Aprire Program.cs in un editor di testo e sostituire il corpo del metodo Main con il codice per inizializzare un oggetto EmailClient con la stringa di connessione. Il codice seguente recupera la stringa di connessione per la risorsa da una variabile di ambiente denominata COMMUNICATION_SERVICES_CONNECTION_STRING. Informazioni su come gestire la stringa di connessione della risorsa.

// This code demonstrates how to fetch your connection string
// from an environment variable.
string connectionString = Environment.GetEnvironmentVariable("COMMUNICATION_SERVICES_CONNECTION_STRING");
EmailClient emailClient = new EmailClient(connectionString);

Inviare un messaggio di posta elettronica con allegati

È possibile aggiungere un allegato definendo un oggetto EmailAttachment e aggiungendolo all'oggetto EmailMessage. Leggere il file allegato e codificarlo usando Base64.


// Create the email content
var emailContent = new EmailContent("Welcome to Azure Communication Service Email APIs.")
{
    PlainText = "This email message is sent from Azure Communication Service Email.",
    Html = "<html><body><h1>Quick send email test</h1><br/><h4>This email message is sent from Azure Communication Service Email.</h4><p>This mail was sent using .NET SDK!!</p></body></html>"
};

// Create the EmailMessage
var emailMessage = new EmailMessage(
    senderAddress: "donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net" // The email address of the domain registered with the Communication Services resource
    recipientAddress: "emailalias@contoso.com"
    content: emailContent);

// Create the EmailAttachment
var filePath = "C:\Users\Documents\attachment.pdf";
byte[] bytes = File.ReadAllBytes(filePath);
var contentBinaryData = new BinaryData(bytes);
var emailAttachment = new EmailAttachment("attachment.pdf", MediaTypeNames.Application.Pdf, contentBinaryData);

emailMessage.Attachments.Add(emailAttachment);

try
{
    EmailSendOperation emailSendOperation = emailClient.Send(WaitUntil.Completed, emailMessage);
    Console.WriteLine($"Email Sent. Status = {emailSendOperation.Value.Status}");

    /// Get the OperationId so that it can be used for tracking the message for troubleshooting
    string operationId = emailSendOperation.Id;
    Console.WriteLine($"Email operation id = {operationId}");
}
catch (RequestFailedException ex)
{
    /// OperationID is contained in the exception message and can be used for troubleshooting purposes
    Console.WriteLine($"Email send operation failed with error code: {ex.ErrorCode}, message: {ex.Message}");
}

Eseguire l'applicazione dalla directory dell'applicazione con il comando dotnet run.

dotnet run

Tipi MIME consentiti

Per altre informazioni sui tipi MIME accettabili per gli allegati di posta elettronica, vedere la documentazione relativa ai tipi MIME consentiti.

Codice di esempio

È possibile scaricare l'app di esempio che illustra questa azione da GitHub

Per iniziare a usare Servizi di comunicazione di Azure, usare la libreria client di Posta elettronica di Servizi di comunicazione per JS per inviare messaggi di posta elettronica.

Suggerimento

Iniziare subito l'esperienza di invio di messaggi di posta elettronica con Servizi di comunicazione di Azure passando direttamente al codice di esempio Invio di messaggi di posta elettronica Basic e Invio di messaggi di posta elettronica Advanced in GitHub.

Informazioni sul modello a oggetti Posta elettronica

Le classi e le interfacce seguenti gestiscono alcune delle principali funzionalità della libreria client Posta elettronica di Servizi di comunicazione di Azure per JavaScript.

Nome Descrizione
EmailAddress Questa classe contiene un indirizzo di posta elettronica e un'opzione per un nome visualizzato.
EmailAttachment Questa classe crea un allegato di posta elettronica accettando un ID univoco, una stringa MIME di tipo allegato di posta elettronica, dati binari per il contenuto e un ID contenuto facoltativo da definire come allegato inline.
EmailClient Questa classe è necessaria per tutte le funzionalità della posta elettronica. È possibile crearne un'istanza con la stringa di connessione e usarla per inviare messaggi di posta elettronica.
EmailClientOptions Questa classe può essere aggiunta all'istanza di EmailClient per specificare una versione dell'API come destinazione.
EmailContent Questa classe contiene l'oggetto e il corpo del messaggio di posta elettronica. È necessario specificare almeno uno dei contenuti in testo normale o formato Html.
EmailCustomHeader Questa classe consente di aggiungere un nome e una coppia di valori per personalizzare un'intestazione. È possibile anche specificare la priorità tramite le intestazioni usando il nome dell’intestazione 'x-priority' o 'x-msmail-priority'
EmailMessage Questa classe combina il mittente, il contenuto e i destinatari. Facoltativamente, è anche possibile aggiungere intestazioni, allegati e indirizzi di posta elettronica di risposta personalizzati.
EmailRecipients Questa classe contiene elenchi di oggetti EmailAddress per i destinatari del messaggio di posta elettronica, tra cui gli elenchi facoltativi per i destinatari CC e CCN.
EmailSendResult Questa classe contiene i risultati dell'operazione di invio tramite posta elettronica. Include un ID operazione, lo stato dell'operazione e l'oggetto dell’errore (se applicabile).
EmailSendStatus Questa classe rappresenta il set di stati di un'operazione di invio di posta elettronica.

EmailSendResult restituisce lo stato seguente nell'operazione di completamento dell’invio di posta elettronica.

Nome dello stato Descrizione
isStarted Restituisce true se l'operazione di invio di posta elettronica è in corso ed è in corso l'elaborazione.
isCompleted Restituisce true se l'operazione di invio tramite posta elettronica è stata completata senza errori e il messaggio di posta elettronica è in uscita e pronto per il recapito. È possibile ottenere qualsiasi stato dettagliato relativo al recapito della posta elettronica oltre questa fase tramite Monitoraggio di Azure o Griglia di eventi di Azure. Informazioni su come abbonarsi a eventi di posta elettronica
result Proprietà presente se l'operazione di invio tramite posta elettronica è stata completata.
Errore Proprietà presente se l'operazione di invio tramite posta elettronica non è riuscita e si è verificato un errore. Il messaggio di posta elettronica non è stato inviato. Il risultato contiene un oggetto errore con altri dettagli sul motivo dell'errore.

Prerequisiti

L’esecuzione delle procedure illustrate in questa guida introduttiva comportano l'addebito di qualche centesimo (USD) o meno nell'account Azure.

Nota

È anche possibile inviare un messaggio di posta elettronica dal proprio dominio verificato. Aggiungere domini verificati personalizzati a Servizio di comunicazione tramite posta elettronica.

Controllo dei prerequisiti

  • In un terminale o una finestra di comando eseguire node --version per verificare che Node.js sia installato.
  • Per visualizzare i domini verificati con la risorsa Servizi di comunicazione di posta elettronica, accedere al portale di Azure, individuare la risorsa Servizi di comunicazione tramite posta elettronica e aprire la scheda Provisioning dei domini dal riquadro di spostamento sinistro.

Configurare l'ambiente dell'applicazione

Creare una nuova applicazione Node.js

Aprire prima di tutto il terminale o la finestra di comando per creare una nuova directory per l'app e passare a tale directory.

mkdir email-quickstart && cd email-quickstart

Eseguire npm init -y per creare un file package.json con le impostazioni predefinite.

npm init -y

Usare un editor di testo per creare un file denominato send-sms.js nella directory radice del progetto. Modificare la proprietà "main" in package.json in "send-email.js". La sezione segue mostra come aggiungere il codice sorgente indicato in questa guida introduttiva al file appena creato.

Installare il pacchetto

Usare il comando npm install per installare la libreria client di Posta elettronica di Servizi di comunicazione di Azure per JavaScript.

npm install @azure/communication-email --save

L'opzione --save elenca la libreria come dipendenza nel file package.json.

Creare il client di posta elettronica con autenticazione

Sono disponibili alcune opzioni diverse per l'autenticazione di un client di posta elettronica:

Importare EmailClient dalla libreria client e crearne un'istanza con la stringa di connessione.

Il codice seguente recupera la stringa di connessione per la risorsa da una variabile di ambiente denominata COMMUNICATION_SERVICES_CONNECTION_STRING. Usare il comando npm install per installare il pacchetto dotenv. Informazioni su come gestire la stringa di connessione della risorsa.

npm install dotenv

Aggiungere il codice seguente al file send-email.js:

const { EmailClient } = require("@azure/communication-email");
require("dotenv").config();

// This code demonstrates how to fetch your connection string
// from an environment variable.
const connectionString = process.env['COMMUNICATION_SERVICES_CONNECTION_STRING'];
const emailClient = new EmailClient(connectionString);

Per semplicità, questa guida introduttiva usa stringhe di connessione, ma negli ambienti di produzione è consigliabile usare le entità servizio.

Inviare un messaggio di posta elettronica con allegati

È possibile aggiungere un allegato definendo un oggetto allegato e aggiungendolo al messaggio. Leggere il file allegato e codificarlo usando Base64.

const filePath = "<path-to-your-file>";

const message = {
  sender: "<donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net>",
  content: {
    subject: "Welcome to Azure Communication Service Email.",
    plainText: "<This email message is sent from Azure Communication Service Email using JavaScript SDK.>"
  },
  recipients: {
    to: [
      {
        address: "<emailalias@emaildomain.com>",
        displayName: "Customer Name",
      }
    ]
  },
  attachments: [
    {
      name: path.basename(filePath),
      contentType: "<mime-type-for-your-file>",
      contentInBase64: readFileSync(filePath, "base64"),
    }
  ]
};

const poller = await emailClient.beginSend(message);
const response = await poller.pollUntilDone();

Tipi MIME consentiti

Per altre informazioni sui tipi MIME accettabili per gli allegati di posta elettronica, vedere la documentazione relativa ai tipi MIME consentiti.

Codice di esempio

È possibile scaricare l'app di esempio che illustra questa azione da GitHub

Per iniziare a usare Servizi di comunicazione di Azure, usare l’SDK di Posta elettronica di Servizi di comunicazione di Azure per Java.

Suggerimento

Iniziare subito l'esperienza di invio di messaggi di posta elettronica con Servizi di comunicazione di Azure passando direttamente al codice di esempio Invio di messaggi di posta elettronica Basic e Invio di messaggi di posta elettronica Advanced in GitHub.

Informazioni sul modello a oggetti Posta elettronica

Le classi e le interfacce seguenti gestiscono alcune delle principali funzionalità dell’SDK di Posta elettronica di Servizi di comunicazione di Azure per Python.

Nome Descrizione
EmailAddress Questa classe contiene un indirizzo di posta elettronica e un'opzione per un nome visualizzato.
EmailAttachment Questa interfaccia crea un allegato di posta elettronica accettando un ID univoco, una stringa di tipo MIME dell'allegato di posta elettronica, una stringa di byte di contenuto e un ID contenuto facoltativo per definirlo come allegato inline.
EmailClient Questa classe è necessaria per tutte le funzionalità della posta elettronica. È possibile crearne un'istanza con la stringa di connessione e usarla per inviare messaggi di posta elettronica.
EmailMessage Questa classe combina il mittente, il contenuto e i destinatari. Facoltativamente, è anche possibile aggiungere intestazioni, allegati e indirizzi di posta elettronica di risposta personalizzati.
EmailSendResult Questa classe contiene i risultati dell'operazione di invio tramite posta elettronica. Include un ID operazione, lo stato dell'operazione e l'oggetto dell’errore (se applicabile).
EmailSendStatus Questa classe rappresenta il set di stati di un'operazione di invio di posta elettronica.

EmailSendResult restituisce lo stato seguente nell'operazione di completamento dell’invio di posta elettronica.

Nome dello stato Descrizione
NOT_STARTED Questo stato non viene attualmente inviato dal servizio.
IN_PROGRESS L'operazione di invio di posta elettronica è attualmente in corso ed è in corso l'elaborazione.
SUCCESSFULLY_COMPLETED L'operazione di invio tramite posta elettronica è stata completata senza errori e il messaggio di posta elettronica è in uscita per il recapito. È possibile ottenere qualsiasi stato dettagliato relativo al recapito della posta elettronica oltre questa fase tramite Monitoraggio di Azure o Griglia di eventi di Azure. Informazioni su come abbonarsi a eventi di posta elettronica
FAILED L'operazione di invio della posta elettronica non è riuscita e si è verificato un errore. Il messaggio di posta elettronica non è stato inviato. Il risultato contiene un oggetto errore con altri dettagli sul motivo dell'errore.

Prerequisiti

Le procedure illustrate in questa guida di avvio rapido comportano l'addebito di qualche centesimo (USD) o meno nell'account Azure.

Nota

È anche possibile inviare un messaggio di posta elettronica dal proprio dominio verificato, vedere Aggiungere domini verificati personalizzati al Servizio di comunicazione tramite posta elettronica.

Controllo dei prerequisiti

  • In una finestra del terminale o di comando eseguire mvn -v per controllare che Maven sia installato.
  • Per visualizzare i domini verificati con la risorsa di Servizi di comunicazione tramite posta elettronica, accedere al portale di Azure. Individuare la risorsa di posta elettronica di Servizi di comunicazione e aprire la scheda Provisioning dei domini nel riquadro di spostamento sinistro.

Configurare l'ambiente dell'applicazione

Per configurare un ambiente per l'invio di messaggi, seguire la procedura descritta nelle sezioni seguenti.

Creare una nuova applicazione Java

Aprire la finestra del terminale o di comando e passare alla directory in cui creare l'applicazione Java. Eseguire il comando seguente per generare il progetto Java dal modello maven-archetype-quickstart.

mvn archetype:generate -DarchetypeArtifactId="maven-archetype-quickstart" -DarchetypeGroupId="org.apache.maven.archetypes" -DarchetypeVersion="1.4" -DgroupId="com.communication.quickstart" -DartifactId="communication-quickstart"

L'obiettivo generate crea una directory con lo stesso nome del valore artifactId. In questa directory, la directory src/main/java contiene il codice sorgente del progetto, la directory src/test/java contiene l'origine di test e il file pom.xml è il modello a oggetti del progetto (POM).

Installare il pacchetto

Aprire il file pom.xml nell'editor di testo. Aggiungere l'elemento di dipendenza seguente al gruppo di dipendenze.

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-email</artifactId>
    <version>1.0.0-beta.2</version>
</dependency>

Configurare il framework dell'app

Aprire /src/main/java/com/communication/quickstart/App.java in un editor di testo, aggiungere le direttive import e rimuovere l'istruzione System.out.println("Hello world!");:

package com.communication.quickstart;

import com.azure.communication.email.models.*;
import com.azure.communication.email.*;
import com.azure.core.util.polling.PollResponse;
import com.azure.core.util.polling.SyncPoller;

public class App
{
    public static void main( String[] args )
    {
        // Quickstart code goes here.
    }
}

Creare il client di posta elettronica con autenticazione

Sono disponibili alcune opzioni diverse per l'autenticazione di un client di posta elettronica:

Per autenticare un client, creare un'istanza di EmailClient con la stringa di connessione. Informazioni su come gestire la stringa di connessione della risorsa . Inoltre, è possibile inizializzare il client con qualsiasi client HTTP personalizzato che implementi l'interfaccia com.azure.core.http.HttpClient.

Per creare un'istanza di un cliente, aggiungere il codice seguente al metodo main:

// You can get your connection string from your resource in the Azure portal.
String connectionString = "endpoint=https://<resource-name>.communication.azure.com/;accesskey=<access-key>";

EmailClient emailClient = new EmailClientBuilder()
    .connectionString(connectionString)
    .buildClient();

Per semplicità, questa guida introduttiva usa stringhe di connessione, ma negli ambienti di produzione è consigliabile usare le entità servizio.

Inviare un messaggio di posta elettronica con allegati

È possibile aggiungere un allegato definendo un oggetto EmailAttachment e aggiungendolo all'oggetto EmailMessage. Leggere il file allegato e codificarlo usando Base64.

BinaryData attachmentContent = BinaryData.fromFile(new File("C:/attachment.txt").toPath());
EmailAttachment attachment = new EmailAttachment(
    "attachment.txt",
    "text/plain",
    attachmentContent
);

EmailMessage message = new EmailMessage()
    .setSenderAddress("<donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net>")
    .setToRecipients("<emailalias@emaildomain.com>")
    .setSubject("Welcome to Azure Communication Services Email")
    .setBodyPlainText("This email message is sent from Azure Communication Services Email using the Java SDK.");
    .setAttachments(attachment);

SyncPoller<EmailSendResult, EmailSendResult> poller = emailClient.beginSend(message, null);
PollResponse<EmailSendResult> response = poller.waitForCompletion();

System.out.println("Operation Id: " + response.getValue().getId());

Tipi MIME consentiti

Per altre informazioni sui tipi MIME accettabili per gli allegati di posta elettronica, vedere la documentazione relativa ai tipi MIME consentiti.

Codice di esempio

È possibile scaricare l'app di esempio che illustra questa azione da GitHub

Per iniziare a usare Servizi di comunicazione di Azure, usare l’SDK di Posta elettronica di Servizi di comunicazione per Python per inviare i messaggi di posta elettronica.

Suggerimento

Iniziare subito l'esperienza di invio di messaggi di posta elettronica con Servizi di comunicazione di Azure passando direttamente al codice di esempio Invio di messaggi di posta elettronica Basic e Invio di messaggi di posta elettronica Advanced in GitHub.

Informazioni sul modello a oggetti Posta elettronica

Il modello di messaggio JSON e l’oggetto risposta illustrano alcune delle principali funzionalità dell’SDK di Posta elettronica di Servizi di comunicazione di Azure per Python.

message = {
    "content": {
        "subject": "str",  # Subject of the email message. Required.
        "html": "str",  # Optional. Html version of the email message.
        "plainText": "str"  # Optional. Plain text version of the email
            message.
    },
    "recipients": {
        "to": [
            {
                "address": "str",  # Email address. Required.
                "displayName": "str"  # Optional. Email display name.
            }
        ],
        "bcc": [
            {
                "address": "str",  # Email address. Required.
                "displayName": "str"  # Optional. Email display name.
            }
        ],
        "cc": [
            {
                "address": "str",  # Email address. Required.
                "displayName": "str"  # Optional. Email display name.
            }
        ]
    },
    "senderAddress": "str",  # Sender email address from a verified domain. Required.
    "attachments": [
        {
            "name": "str"  # Name of the attachment. Required.
            "contentType": "str",  # MIME type of the content being attached. Required.
            "contentInBase64": "str",  # Base64 encoded contents of the attachment. Required.
            "contentId": "str" # Unique identifier (CID) to reference an inline attachment. Optional
        }
    ],
    "userEngagementTrackingDisabled": bool,  # Optional. Indicates whether user engagement tracking should be disabled for this request if the resource-level user engagement tracking setting was already enabled in the control plane.
    "headers": {
        "str": "str"  # Optional. Custom email headers to be passed.
    },
    "replyTo": [
        {
            "address": "str",  # Email address. Required.
            "displayName": "str"  # Optional. Email display name.
        }
    ]
}

response = {
    "id": "str",  # The unique id of the operation. Uses a UUID. Required.
    "status": "str",  # Status of operation. Required. Known values are:
        "NotStarted", "Running", "Succeeded", and "Failed".
    "error": {
        "additionalInfo": [
            {
                "info": {},  # Optional. The additional info.
                "type": "str"  # Optional. The additional info type.
            }
        ],
        "code": "str",  # Optional. The error code.
        "details": [
            ...
        ],
        "message": "str",  # Optional. The error message.
        "target": "str"  # Optional. The error target.
    }
}

I valori response.status sono illustrati più avanti nella tabella seguente.

Nome dello stato Descrizione
InProgress L'operazione di invio di posta elettronica è attualmente in corso ed è in corso l'elaborazione.
Completato L'operazione di invio tramite posta elettronica è stata completata senza errori e il messaggio di posta elettronica è in uscita per il recapito. È possibile ottenere qualsiasi stato dettagliato relativo al recapito della posta elettronica oltre questa fase tramite Monitoraggio di Azure o Griglia di eventi di Azure. Informazioni su come abbonarsi a eventi di posta elettronica
Non riuscito L'operazione di invio della posta elettronica non è riuscita e si è verificato un errore. Il messaggio di posta elettronica non è stato inviato. Il risultato contiene un oggetto errore con altri dettagli sul motivo dell'errore.

Prerequisiti

L’esecuzione delle procedure illustrate in questa guida introduttiva comportano l'addebito di qualche centesimo (USD) o meno nell'account Azure.

Nota

È anche possibile inviare un messaggio di posta elettronica dal proprio dominio verificato. Aggiungere domini verificati personalizzati a Servizio di comunicazione tramite posta elettronica.

Controllo dei prerequisiti

  • In una finestra del terminale o di comando eseguire il comando python --version per verificare se Python è installato.
  • Per visualizzare i domini verificati con la risorsa di Servizi di comunicazione tramite posta elettronica, accedere al portale di Azure. Individuare la risorsa di posta elettronica di Servizi di comunicazione e aprire la scheda Provisioning dei domini nel riquadro di spostamento sinistro.

Configurare l'ambiente dell'applicazione

Per configurare un ambiente per l'invio di messaggi, seguire la procedura descritta nelle sezioni seguenti.

Creare una nuova applicazione Python

  1. Aprire la finestra del terminale o di comando. Usare quindi il comando seguente per creare un ambiente virtuale e attivarlo. Questo comando crea una nuova directory per l'app.

    python -m venv email-quickstart
    
  2. Passare alla directory radice dell'ambiente virtuale e attivarla usando i comandi seguenti.

    cd email-quickstart
    .\Scripts\activate
    
  3. Usare un editor di testo per creare un file denominato send.email.py nella directory radice del progetto e aggiungere la struttura per il programma, inclusa la gestione delle eccezioni di base.

    import os
    from azure.communication.email import EmailClient
    
    try:
        # Quickstart code goes here.
    except Exception as ex:
        print('Exception:')
        print(ex)
    

Nelle sezioni seguenti, tutto il codice sorgente usato in questa guida introduttiva verrà aggiunto al file send-email.py appena creato.

Installare il pacchetto

Sempre all’interno della directory dell'applicazione, installare il pacchetto dell’SDK di Posta elettronica di Servizi di comunicazione di Azure per Python usando il comando seguente.

pip install azure-communication-email

Creare il client di posta elettronica con autenticazione

Sono disponibili alcune opzioni diverse per l'autenticazione di un client di posta elettronica:

Creare un'istanza di EmailClient con la stringa di connessione. Informazioni su come gestire la stringa di connessione della risorsa .

# Create the EmailClient object that you use to send Email messages.
email_client = EmailClient.from_connection_string(<connection_string>)

Per semplicità, questa guida introduttiva usa stringhe di connessione, ma negli ambienti di produzione è consigliabile usare le entità servizio.

Inviare un messaggio di posta elettronica con allegati

È possibile aggiungere un allegato definendo un oggetto attachment e aggiungendolo all'oggetto attachments .message Leggere il file allegato e codificarlo usando Base64. Decodificare i byte come stringa e passarlo all'oggetto attachment .

import base64

with open("<path-to-your-attachment>", "rb") as file:
    file_bytes_b64 = base64.b64encode(file.read())

message = {
    "content": {
        "subject": "This is the subject",
        "plainText": "This is the body",
        "html": "html><h1>This is the body</h1></html>"
    },
    "recipients": {
        "to": [
            {
                "address": "<recipient1@emaildomain.com>",
                "displayName": "Customer Name"
            }
        ]
    },
    "senderAddress": "<donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net>",
    "attachments": [
        {
            "name": "<your-attachment-name>",
            "contentType": "<your-attachment-mime-type>",
            "contentInBase64": file_bytes_b64.decode()
        }
    ]
}

poller = email_client.begin_send(message)
result = poller.result()

Tipi MIME consentiti

Per altre informazioni sui tipi MIME accettabili per gli allegati di posta elettronica, vedere la documentazione relativa ai tipi MIME consentiti.

Codice di esempio

È possibile scaricare l'app di esempio che illustra questa azione da GitHub

Risoluzione dei problemi

Recapito tramite posta elettronica

Per risolvere i problemi relativi al recapito tramite posta elettronica, è possibile ottenere lo stato del recapito tramite posta elettronica per acquisire i dettagli di recapito.

Importante

Un risultato con positivo restituito dal polling per lo stato dell'operazione di invio conferma solo il fatto che il messaggio di posta elettronica è stato inviato correttamente per il recapito. Per ottenere informazioni aggiuntive sullo stato del recapito al destinatario finale, è necessario fare riferimento a Come gestire gli eventi di posta elettronica.

Limitazione della posta elettronica

Se si nota che l'applicazione si blocchi, è possibile che il problema sia dovuto a una limitazione dell'invio di messaggi di posta elettronica. È possibile gestire il problema registrando o implementando un criterio personalizzato.

Nota

Questa configurazione sandbox consente agli sviluppatori di iniziare a compilare l'applicazione. È possibile richiedere di aumentare progressivamente il volume di invio appena l'applicazione passa allo stato operativo. Inviare una richiesta di supporto per aumentare il limite di invio se si ha la necessità di inviare un volume di messaggi che superano i limiti di frequenza.

Pulire le risorse di Servizi di comunicazione di Azure

Se si vuole pulire e rimuovere una sottoscrizione a Servizi di comunicazione, è possibile eliminare la risorsa o il gruppo di risorse. L'eliminazione del gruppo di risorse comporta anche l'eliminazione di tutte le altre risorse associate. Altre informazioni sulla pulizia delle risorse.

Passaggi successivi

In questa guida introduttiva si è appreso come inviare un messaggio di posta elettronica con allegati usando Servizi di comunicazione di Azure.

Può essere utile vedere anche gli articoli seguenti: