快速入门

您所在的位置:网站首页 要一个电子邮件地址 快速入门

快速入门

2024-05-09 01:29| 来源: 网络整理| 查看: 265

你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

快速入门:向多名收件人发送电子邮件 项目01/10/2024

在本快速入门中,你将了解如何使用电子邮件 SDK 将电子邮件发送给多名收件人。

通过使用通信服务 .NET 电子邮件客户端库来发送电子邮件,开启 Azure 通信服务使用旅程。

提示

通过直接跳到 GitHub 上的基本电子邮件发送和高级电子邮件发送示例代码,率先启动使用 Azure 通信服务发送电子邮件的体验。

了解电子邮件对象模型

以下类和接口处理适用于 C# 的 Azure 通信服务电子邮件客户端库的某些主要功能。

名称 说明 EmailAddress 此类包含一个电子邮件地址和一个显示名称选项。 EmailAttachment 此类通过接受唯一 ID、电子邮件附件 MIME 类型字符串和内容的二进制数据来创建电子邮件附件。 EmailClient 所有电子邮件功能需要此类。 使用连接字符串将其实例化,然后使用它来发送电子邮件。 EmailClientOptions 可将此类添加到EmailClient 实例化以面向特定的 API 版本。 EmailContent 此类包含电子邮件的主题和正文。 必须至少指定纯文本或 Html 内容之一 EmailCustomHeader 使用此类可为自定义标头添加名称和值对。 还可以使用标头名称“x-priority”或“x-msmail-priority”通过这些标头指定电子邮件重要性 EmailMessage 此类合并发件人、内容和收件人。 还可以选择添加自定义标头、附件和回复电子邮件地址。 EmailRecipients 此类保存电子邮件收件人的 EmailAddress 对象列表,包括抄送和密件抄送收件人的可选列表。 EmailSendOperation 此类表示异步电子邮件发送操作,并从电子邮件发送 API 调用返回。 EmailSendResult 此类保存电子邮件发送操作的结果。 它具有操作 ID、操作状态和错误对象(如果适用)。

EmailSendResult 返回执行的电子邮件操作的以下状态。

状态 说明 NotStarted 目前,我们不会从我们的服务发送此状态。 正在运行 电子邮件发送操作当前正在进行且正在处理中。 已成功 如果电子邮件发送操作已完成且未出错,并且电子邮件正在传送中。 在此阶段之外传送的电子邮件的任何详细状态都可以通过 Azure Monitor 或 Azure 事件网格获取。 了解如何订阅电子邮件事件 已失败 电子邮件发送操作未成功,并遇到错误。 电子邮件未发送。 结果包含错误对象,以及有关失败原因的更多详细信息。 先决条件 具有活动订阅的 Azure 帐户。 免费创建帐户。 适用于你的操作系统的最新版本 .NET Core 客户端库。 已使用预配的域创建并准备好了一个 Azure 电子邮件通信服务资源。开始创建电子邮件通信资源 一个与电子邮件域连接的活动通信服务资源,以及一个连接字符串。 开始将电子邮件资源与通信资源相连接

完成本快速入门会从你的 Azure 帐户中扣取最多几美分的费用。

注意

我们还可以从我们自己的已验证域发送电子邮件。 将自定义的已验证域添加到电子邮件通信服务。

先决条件检查 在终端或命令窗口中,运行 dotnet 命令来查看是否安装了 .NET 客户端。 若要查看与电子邮件通信服务资源关联的子域,请登录到 Azure 门户,找到你的电子邮件通信服务资源,然后从左侧导航窗格中打开“预配域”选项卡。 新建 C# 应用程序

在控制台窗口(例如 cmd、PowerShell 或 Bash)中,使用 dotnet new 命令创建名为 EmailQuickstart 的新控制台应用。 此命令将创建包含单个源文件的简单“Hello World”C# 项目:Program.cs。

dotnet new console -o EmailQuickstart

将目录更改为新创建的应用文件夹,并使用 dotnet build 命令编译应用程序。

cd EmailQuickstart dotnet build 安装包

仍在应用程序目录中时,使用 dotnet add package 命令安装适用于 .NET 包的 Azure 通信服务电子邮件客户端库。

dotnet add package Azure.Communication.Email 创建具有身份验证的电子邮件客户端

打开 Program.cs,将现有代码替换为以下内容,以添加 using 指令,用于包含 Azure.Communication.Email 命名空间和程序的执行起点。

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) { } } }

可使用几个不同的选项对电子邮件客户端进行身份验证:

连接字符串 Azure Active Directory AzureKeyCredential

在文本编辑器中打开 Program.cs,并将 Main 方法的主体替换为使用连接字符串初始化 EmailClient 的代码。 以下代码从名为 COMMUNICATION_SERVICES_CONNECTION_STRING 的环境变量中检索资源的连接字符串。 了解如何管理资源的连接字符串。

// 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);

要使用 Azure Active Directory 进行身份验证,请使用 dotnet add package 命令安装适用于 .NET 的 Azure.Identity 库包。

dotnet add package Azure.Identity

在文本编辑器中打开 Program.cs,并将 Main 方法的主体替换为使用 DefaultAzureCredential 初始化 EmailClient 的代码。 Azure 标识 SDK 会在运行时读取三个环境变量中的值,以对应用程序进行身份验证。 了解如何创建 Azure Active Directory 注册应用程序并设置环境变量。

// This code demonstrates how to authenticate to your Communication Service resource using // DefaultAzureCredential and the environment variables AZURE_CLIENT_ID, AZURE_TENANT_ID, // and AZURE_CLIENT_SECRET. string resourceEndpoint = ""; EmailClient emailClient = new EmailClient(new Uri(resourceEndpoint), new DefaultAzureCredential());

电子邮件客户端也可以使用 AzureKeyCredential 进行身份验证。 可以在通信服务资源“设置”下的“密钥”窗格中找到key 和 endpoint。

var key = new AzureKeyCredential(""); var endpoint = new Uri(""); var emailClient = new EmailClient(endpoint, key); 向多个收件人发送电子邮件

可以通过将更多 EmailAddress 添加到 EmailRecipient 对象来定义多个收件人。 可以将这些地址添加为 To、CC 或 BCC 收件人。 我们还可以选择添加 ReplyTo 电子邮件地址来接收任何答复。

// 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 = "Quick send email testThis email message is sent from Azure Communication Service Email.

This mail was sent using .NET SDK!!

" }; // Create the To list var toRecipients = new List { new EmailAddress(""), new EmailAddress(""), }; // Create the CC list var ccRecipients = new List { new EmailAddress(""), }; // Create the BCC list var bccRecipients = new List { new EmailAddress(""), }; EmailRecipients emailRecipients = new EmailRecipients(toRecipients, ccRecipients, bccRecipients); // Create the EmailMessage var emailMessage = new EmailMessage( senderAddress: "[email protected]" // The email address of the domain registered with the Communication Services resource emailRecipients, emailContent); // Add optional ReplyTo address which is where any replies to the email will go to. emailMessage.ReplyTo.Add(new EmailAddress("")); 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}"); }

从应用程序目录使用 dotnet run 命令运行应用程序。

dotnet run 代码示例

可以从 GitHub 下载展示此操作的示例应用

通过使用通信服务 JS 电子邮件客户端库来发送电子邮件,开启 Azure 通信服务使用旅程。

提示

通过直接跳到 GitHub 上的基本电子邮件发送和高级电子邮件发送示例代码,率先启动使用 Azure 通信服务发送电子邮件的体验。

了解电子邮件对象模型

以下类和接口处理适用于 JavaScript 的 Azure 通信服务电子邮件客户端库的某些主要功能。

名称 说明 EmailAddress 此类包含一个电子邮件地址和一个显示名称选项。 EmailAttachment 此类通过接受唯一 ID、电子邮件附件 MIME 类型字符串和内容的二进制数据来创建电子邮件附件。 EmailClient 所有电子邮件功能需要此类。 使用连接字符串将其实例化,然后使用它来发送电子邮件。 EmailClientOptions 可将此类添加到EmailClient 实例化以面向特定的 API 版本。 EmailContent 此类包含电子邮件的主题和正文。 必须至少指定纯文本或 Html 内容之一。 EmailCustomHeader 使用此类可为自定义标头添加名称和值对。 还可以使用标头名称“x-priority”或“x-msmail-priority”通过这些标头指定电子邮件重要性。 EmailMessage 此类合并发件人、内容和收件人。 还可以选择添加自定义标头、附件和回复电子邮件地址。 EmailRecipients 此类保存电子邮件收件人的 EmailAddress 对象列表,包括抄送和密件抄送收件人的可选列表。 EmailSendResult 此类保存电子邮件发送操作的结果。 它具有操作 ID、操作状态和错误对象(如果适用)。 EmailSendStatus 此类表示电子邮件发送操作的状态集。

EmailSendResult 返回执行的电子邮件操作的以下状态。

状态名称 说明 isStarted 电子邮件发送操作当前正在进行且正在处理中,则返回 true。 isCompleted 如果电子邮件发送操作已完成且未出错,并且电子邮件正在传送中,则返回 true。 在此阶段之外传送的电子邮件的任何详细状态都可以通过 Azure Monitor 或 Azure 事件网格获取。 了解如何订阅电子邮件事件 result 如果电子邮件发送操作已结束,则为存在的属性。 error 电子邮件发送操作未成功,并遇到错误,则为存在的属性。 电子邮件未发送。 结果包含错误对象,以及有关失败原因的更多详细信息。 先决条件 Node.js (~14)。 具有活动订阅的 Azure 帐户。 免费创建帐户。 已使用预配的域创建并准备好了一个 Azure 电子邮件通信服务资源。 开始创建电子邮件通信资源。 一个连接到电子邮件域的活动 Azure 通信服务资源,及其连接字符串。 首先将电子邮件通信资源与 Azure 通信资源相连接。

完成本快速入门会从你的 Azure 帐户中扣取最多几美分的费用。

注意

我们还可以从我们自己的已验证域发送电子邮件。 将自定义的已验证域添加到电子邮件通信服务。

先决条件检查 在终端或命令窗口中,运行 node --version 以查看是否安装了 Node.js。 若要查看使用电子邮件通信服务资源验证的子域,请登录到 Azure 门户,找到你的电子邮件通信服务资源,然后从左侧导航窗格中打开“预配域”选项卡。 设置应用程序环境 创建新的 Node.js 应用程序

首先,打开终端或命令窗口,为应用创建一个新目录,并导航到该目录。

mkdir email-quickstart && cd email-quickstart

运行 npm init -y 以使用默认设置创建 package.json 文件。

npm init -y

使用文本编辑器在项目根目录中创建名为“send-email.js”的文件。 将 package.json 中的“main”属性更改为“send-email.js”。 以下部分演示如何将本快速入门的源代码添加到新创建的文件。

安装包

使用 npm install 命令安装适用于 JavaScript 的 Azure 通信服务电子邮件客户端库。

npm install @azure/communication-email --save

--save 选项将该库作为 package.json 文件中的依赖项列出。

创建具有身份验证的电子邮件客户端

可使用几个不同的选项对电子邮件客户端进行身份验证:

连接字符串 Microsoft Entra ID AzureKeyCredential

从客户端库导入 EmailClient,并使用连接字符串将其实例化。

以下代码使用 dotenv 包从名为 COMMUNICATION_SERVICES_CONNECTION_STRING 的环境变量中检索资源的连接字符串。 使用 npm install 命令安装 dotenv 包。 了解如何管理资源的连接字符串。

npm install dotenv

将以下代码添加到 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);

还可以使用 Azure 标识库对 Microsoft Entra ID 进行身份验证。 要使用以下代码片段中的 DefaultAzureCredential 提供程序或 Azure SDK 随附的其他凭据提供程序,请安装 @azure/identity 包:

npm install @azure/identity

@azure/identity 包提供应用程序可用于身份验证的各种凭据类型。 @azure/identity 的自述文件提供了更多详细信息和示例来帮助你入门。 需要 AZURE_CLIENT_SECRET、AZURE_CLIENT_ID 和 AZURE_TENANT_ID 环境变量才能创建 DefaultAzureCredential 对象。

import { DefaultAzureCredential } from "@azure/identity"; import { EmailClient } from "@azure/communication-email"; const endpoint = "https://.communication.azure.com"; let credential = new DefaultAzureCredential(); const emailClient = new EmailClient(endpoint, credential);

电子邮件客户端也可以使用 AzureKeyCredential 进行身份验证。 可以在通信服务资源“设置”下的“密钥”窗格中找到key 和 endpoint。

const { EmailClient, KnownEmailSendStatus } = require("@azure/communication-email"); const { AzureKeyCredential } = require("@azure/core-auth"); require("dotenv").config(); var key = new AzureKeyCredential(""); var endpoint = ""; const emailClient = new EmailClient(endpoint, key);

为简单起见,本快速入门使用了连接字符串,但在生产环境中,我们建议使用服务主体。

向多个收件人发送电子邮件

若要向多个收件人发送电子邮件,请为每个收件人类型添加一个对象,为每个收件人添加一个对象。 可以将这些地址添加为 To、CC 或 BCC 收件人。 (可选)如果要接收任何答复,可向 replyTo 属性添加电子邮件地址。

const message = { senderAddress: "", content: { subject: "Welcome to Azure Communication Service Email.", plainText: "" }, recipients: { to: [ { address: "[email protected]", displayName: "Customer Name 1", }, { address: "[email protected]", displayName: "Customer Name 2", } ], cc: [ { address: "[email protected]", displayName: " CC Customer 1", }, { address: "[email protected]", displayName: "CC Customer 2", } ], bcc: [ { address: "[email protected]", displayName: " BCC Customer 1", }, { address: "[email protected]", displayName: "BCC Customer 2", } ] }, replyTo: [ { address: "[email protected]", displayName: "ReplyTo Customer 1", } ] }; const poller = await emailClient.beginSend(message); const response = await poller.pollUntilDone(); 代码示例

可以从 GitHub 下载展示此操作的示例应用

首先使用通信服务 Java 电子邮件 SDK 发送电子邮件,以此开始使用 Azure 通信服务。

提示

通过直接跳到 GitHub 上的基本电子邮件发送和高级电子邮件发送示例代码,率先启动使用 Azure 通信服务发送电子邮件的体验。

了解电子邮件对象模型

以下类和接口用于处理适用于 Python 的 Azure 通信服务电子邮件 SDK 的某些主要功能。

名称 说明 EmailAddress 此类包含一个电子邮件地址和一个显示名称选项。 EmailAttachment 此接口通过接受唯一 ID、电子邮件附件 MIME 类型字符串和内容字节字符串来创建电子邮件附件。 EmailClient 所有电子邮件功能需要此类。 使用连接字符串将其实例化,然后使用它来发送电子邮件。 EmailMessage 此类合并发件人、内容和收件人。 还可以选择添加自定义标头、附件和回复电子邮件地址。 EmailSendResult 此类保存电子邮件发送操作的结果。 它具有操作 ID、操作状态和错误对象(如果适用)。 EmailSendStatus 此类表示电子邮件发送操作的状态集。

EmailSendResult 返回执行的电子邮件操作的以下状态。

状态名称 说明 NOT_STARTED 目前,我们不会从我们的服务发送此状态。 IN_PROGRESS 电子邮件发送操作当前正在进行且正在处理中。 SUCCESSFULLY_COMPLETED 如果电子邮件发送操作已完成且未出错,并且电子邮件正在传送中。 在此阶段之外传送的电子邮件的任何详细状态都可以通过 Azure Monitor 或 Azure 事件网格获取。 了解如何订阅电子邮件事件 FAILED 电子邮件发送操作未成功,并遇到错误。 电子邮件未发送。 结果包含错误对象,以及有关失败原因的更多详细信息。 先决条件 具有活动订阅的 Azure 帐户。 免费创建帐户。 Java 开发工具包 (JDK) 8 或更高版本。 Apache Maven。 已部署的通信服务资源和连接字符串。 有关详细信息,请参阅创建通信服务资源。 创建 Azure 电子邮件通信服务资源以开始发送电子邮件。 有关用于开发环境的设置托管标识,请参阅使用托管标识授予访问权限。

完成本快速入门会从你的 Azure 帐户中扣取最多几美分的费用。

注意

我们还可以从我们自己的已验证域发送电子邮件,将自定义验证域添加到电子邮件通信服务。

先决条件检查 在终端或命令窗口中,运行 mvn -v 检查是否安装了 Maven。 若要查看经过电子邮件通信服务资源验证的域,请登录到 Azure 门户。 找到电子邮件通信服务资源,并从左侧导航窗格中打开“预配域”选项卡。 设置应用程序环境

若要设置用于发送电子邮件的环境,请执行以下部分中所述的步骤。

创建新的 Java 应用程序

打开终端或命令窗口,并导航到要在其中创建 Java 应用程序的目录。 运行以下命令以从 maven-archetype-quickstart 模板生成 Java 项目。

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

generate 目标将创建一个名称与 artifactId 值相同的目录。 在此目录下,src/main/java 目录包含项目源代码,src/test/java 目录包含测试源,pom.xml 文件是项目的项目对象模型 (POM)。

安装包

在文本编辑器中打开 pom.xml 文件。 将以下依赖项元素添加到依赖项组。

com.azure azure-communication-email 1.0.0-beta.2 设置应用框架

在文本编辑器中打开 /src/main/java/com/communication/quickstart/App.java,添加 import 指令并删除 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. } } 创建具有身份验证的电子邮件客户端

可使用几个不同的选项对电子邮件客户端进行身份验证:

连接字符串 Microsoft Entra ID AzureKeyCredential

若要对客户端进行身份验证,请使用连接字符串实例化 EmailClient。 了解如何管理资源的连接字符串。 还可以使用任何实现 com.azure.core.http.HttpClient 接口的自定义 HTTP 客户端来初始化此客户端。

若要实例化客户端,请将以下代码添加到 main 方法:

// You can get your connection string from your resource in the Azure portal. String connectionString = "endpoint=https://.communication.azure.com/;accesskey="; EmailClient emailClient = new EmailClientBuilder() .connectionString(connectionString) .buildClient();

必须通过 credential() 方法将 DefaultAzureCredential 对象传递给 EmailClientBuilder。 还必须通过 endpoint() 方法设置终结点。

需要 AZURE_CLIENT_SECRET、AZURE_CLIENT_ID 和 AZURE_TENANT_ID 环境变量才能创建 DefaultAzureCredential 对象。

// You can find your endpoint and access key from your resource in the Azure portal String endpoint = "https://.communication.azure.com/"; EmailClient emailClient = new EmailClientBuilder() .endpoint(endpoint) .credential(new DefaultAzureCredentialBuilder().build()) .buildClient();

还可以使用终结点和从 Azure 门户中的 Azure 通信资源获取的 Azure 密钥凭据来创建电子邮件客户端并对其进行身份验证。

String endpoint = "https://.communication.azure.com"; AzureKeyCredential azureKeyCredential = new AzureKeyCredential(""); EmailClient emailClient = new EmailClientBuilder() .endpoint(endpoint) .credential(azureKeyCredential) .buildClient();

为简单起见,本快速入门使用了连接字符串,但在生产环境中,我们建议使用服务主体。

向多个收件人发送电子邮件

若要向多个收件人发送电子邮件,请在相应的 EmailMessage 资源库中添加新地址。 可以将这些地址添加为 To、CC 或 BCC 收件人。 (可选)如果要接收任何答复,可向 replyTo 属性添加电子邮件地址。

EmailMessage message = new EmailMessage() .setSenderAddress("") .setSubject("Welcome to Azure Communication Services Email") .setBodyPlainText("This email message is sent from Azure Communication Services Email using the Java SDK.") .setToRecipients("", "") .setCcRecipients("") .setBccRecipients("") .setReplyTo(""); SyncPoller poller = emailClient.beginSend(message, null); PollResponse response = poller.waitForCompletion(); System.out.println("Operation Id: " + response.getValue().getId());

若要进一步自定义电子邮件收件人,可以实例化 EmailAddress 对象并将其传递给相应的 EmailMessage 资源库。

EmailAddress toAddress1 = new EmailAddress("") .setDisplayName("Recipient"); EmailAddress toAddress2 = new EmailAddress("") .setDisplayName("Recipient 2"); EmailMessage message = new EmailMessage() .setSenderAddress("") .setSubject("Welcome to Azure Communication Services Email") .setBodyPlainText("This email message is sent from Azure Communication Services Email using the Java SDK.") .setToRecipients(toAddress1, toAddress2) .setCcRecipients(toAddress1, toAddress2) .setBccRecipients(toAddress1, toAddress2) SyncPoller poller = emailClient.beginSend(message, null); PollResponse response = poller.waitForCompletion(); System.out.println("Operation Id: " + response.getValue().getId()); 代码示例

可以从 GitHub 下载展示此操作的示例应用

首先使用通信服务 Python 电子邮件 SDK 发送电子邮件,以此开始使用 Azure 通信服务。

提示

通过直接跳到 GitHub 上的基本电子邮件发送和高级电子邮件发送示例代码,率先启动使用 Azure 通信服务发送电子邮件的体验。

了解电子邮件对象模型

以下 JSON 消息模板和响应对象演示了适用于 Python 的 Azure 通信服务 电子邮件 SDK 的一些主要功能。

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": [ { "contentInBase64": "str", # Base64 encoded contents of the attachment. Required. "contentType": "str", # MIME type of the content being attached. Required. "name": "str" # Name of the attachment. Required. } ], "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. } }

下表进一步说明了 response.status 值。

状态名称 说明 正在进行 电子邮件发送操作当前正在进行且正在处理中。 已成功 如果电子邮件发送操作已完成且未出错,并且电子邮件正在传送中。 在此阶段之外传送的电子邮件的任何详细状态都可以通过 Azure Monitor 或 Azure 事件网格获取。 了解如何订阅电子邮件事件 已失败 电子邮件发送操作未成功,并遇到错误。 电子邮件未发送。 结果包含错误对象,以及有关失败原因的更多详细信息。 先决条件 具有活动订阅的 Azure 帐户。 免费创建帐户。 Python 3.7+。 已使用预配的域创建并准备好了一个 Azure 电子邮件通信服务资源。 开始创建电子邮件通信资源。 一个连接到电子邮件域的活动 Azure 通信服务资源,及其连接字符串。 首先将电子邮件通信资源与 Azure 通信资源相连接。

完成本快速入门会从你的 Azure 帐户中扣取最多几美分的费用。

注意

我们还可以从我们自己的已验证域发送电子邮件。 将自定义的已验证域添加到电子邮件通信服务。

先决条件检查 在终端或命令窗口中,运行 python --version 命令来查看是否安装了 Python。 若要查看经过电子邮件通信服务资源验证的域,请登录到 Azure 门户。 找到电子邮件通信服务资源,并从左侧导航窗格中打开“预配域”选项卡。 设置应用程序环境

若要设置用于发送电子邮件的环境,请执行以下部分中所述的步骤。

创建新的 Python 应用程序

打开终端或命令窗口。 然后使用以下命令来创建一个虚拟环境并将其激活。 此命令为应用创建新目录。

python -m venv email-quickstart

导航到虚拟环境的根目录,并使用以下命令激活它。

cd email-quickstart .\Scripts\activate

使用文本编辑器在项目根目录中创建名为“send-email.py”的文件,并添加程序的结构,包括基本异常处理。

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

在以下部分,你要将本快速入门的所有源代码添加到你创建的 send-email.py 文件。

安装包

仍在应用程序目录中操作,使用以下命令安装适用于 Python 的 Azure 通信服务电子邮件 SDK 包。

pip install azure-communication-email 创建具有身份验证的电子邮件客户端

可使用几个不同的选项对电子邮件客户端进行身份验证:

连接字符串 Microsoft Entra ID AzureKeyCredential

使用连接字符串实例化 EmailClient。 了解如何管理资源的连接字符串。

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

还可以使用 DefaultAzureCredential 进行 Active Directory 身份验证。

from azure.communication.email import EmailClient from azure.identity import DefaultAzureCredential # To use Azure Active Directory Authentication (DefaultAzureCredential) make sure to have AZURE_TENANT_ID, AZURE_CLIENT_ID and AZURE_CLIENT_SECRET as env variables. endpoint = "https://.communication.azure.com" email_client = EmailClient(endpoint, DefaultAzureCredential())

电子邮件客户端也可以使用 AzureKeyCredential 进行身份验证。 可以在通信服务资源“设置”下的“密钥”窗格中找到key 和 endpoint。

from azure.communication.email import EmailClient from azure.core.credentials import AzureKeyCredential key = AzureKeyCredential(""); endpoint = ""; email_client = EmailClient(endpoint, key);

为简单起见,本快速入门使用了连接字符串,但在生产环境中,我们建议使用服务主体。

向多个收件人发送电子邮件

可以通过将更多电子邮件地址添加到 recipients 对象来定义多个收件人。 这些地址可以相应地添加为 to、cc 或 bcc 收件人列表。 我们还可以选择添加 ReplyTo 电子邮件地址来接收任何答复。

message = { "content": { "subject": "This is the subject", "plainText": "This is the body", "html": "html>This is the body" }, "recipients": { "to": [ {"address": "", "displayName": "Customer Name"}, {"address": "", "displayName": "Customer Name 2"} ], "cc": [ {"address": "", "displayName": "Customer Name"}, {"address": "", "displayName": "Customer Name 2"} ], "bcc": [ {"address": "", "displayName": "Customer Name"}, {"address": "", "displayName": "Customer Name 2"} ] }, "replyTo": [ {"address": "", "displayName": "Display Name"} ], "senderAddress": "" } poller = email_client.begin_send(message) result = poller.result() 代码示例

可以从 GitHub 下载展示此操作的示例应用

故障排除 电子邮件发送

要排查与电子邮件发送相关的问题,可以获取电子邮件发送状态来捕获发送详细信息。

重要

通过轮询发送操作的状态返回的成功结果只能确认电子邮件已成功发送以供传递这一事实。 要获取有关收件人端送达状态的其他信息,需要参考如何处理电子邮件事件。

电子邮件限制

如果看到应用程序挂起,可能是由于电子邮件发送被限制。 可以通过日志记录或实现自定义策略来处理此问题。

注意

此沙盒设置可帮助开发人员开始构建应用程序。 应用程序准备好发布后,可以逐渐请求增加发送量。 如果需要发送超出速率限制的消息量,请提交支持请求以提高所需的发送限制。

清理 Azure 通信服务资源

如果想要清理并删除通信服务订阅,可以删除资源或资源组。 删除资源组同时也会删除与之相关联的任何其他资源。 了解有关清理资源的详细信息。

后续步骤

在本快速入门中,你学习了如何在使用 Azure 通信服务发送电子邮件时手动轮询状态。

你可能还想要:

了解如何手动轮询电子邮件状态 详细了解如何发送包含附件的电子邮件 熟悉电子邮件客户端库


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3