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
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- La versione più recente della libreria client .NET Core per il sistema operativo in uso.
- Una risorsa di posta elettronica di Servizi di comunicazione di Azure creata e pronta all’uso con un dominio sottoposto a provisioning, vedere Introduzione alla creazione di una risorsa di comunicazione tramite posta elettronica
- Una risorsa di Servizi di comunicazione di Azure attiva connessa al dominio della posta elettronica e a una stringa di connessione. Introduzione alla connessione di una risorsa di posta elettronica con una risorsa di comunicazione
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
- Node.js (~14).
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Una risorsa di posta elettronica di Servizi di comunicazione di Azure creata e munita di un dominio sottoposto a provisioning. Introduzione alla creazione di una risorsa di comunicazione tramite posta elettronica.
- Una risorsa di Servizi di comunicazione di Azure attiva connessa al dominio di posta elettronica e relativa stringa di connessione. Per iniziare, connettere una risorsa di comunicazione tramite posta elettronica con una risorsa di Servizi di comunicazione diAzure.
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
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Java Development Kit (JDK) versione 8 o successiva.
- Apache Maven.
- Una risorsa di Servizi di comunicazione distribuita e una stringa di connessione. Per informazioni dettagliate vedere Creare una risorsa di Servizi di comunicazione di Azure.
- Creare una risorsa di Servizi di comunicazione tramite posta elettronica di Azure per iniziare a inviare messaggi di posta elettronica.
- Un'identità gestita di configurazione per un ambiente di sviluppo, vedere Autorizzare l'accesso con un’identità gestita.
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
- Un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
- Python 3.7+.
- Una risorsa di posta elettronica di Servizi di comunicazione di Azure creata e munita di un dominio sottoposto a provisioning. Introduzione alla creazione di una risorsa di comunicazione tramite posta elettronica.
- Una risorsa di Servizi di comunicazione di Azure attiva connessa al dominio di posta elettronica e relativa stringa di connessione. Per iniziare, connettere una risorsa di comunicazione tramite posta elettronica con una risorsa di Servizi di comunicazione diAzure.
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
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
Passare alla directory radice dell'ambiente virtuale e attivarla usando i comandi seguenti.
cd email-quickstart .\Scripts\activate
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:
- Informazioni su come eseguire manualmente il polling dello stato della posta elettronica
- Altre informazioni sull'invio di messaggi di posta elettronica a più destinatari
- Acquisire familiarità con la libreria client di posta elettronica