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

快速入门:如何在电子邮件通信服务中添加和删除多个发件人地址

在本快速入门中,你将了解如何在 Azure 通信服务中添加和删除多个电子邮件发件人地址。

先决条件

创建多个发件人用户名

预配用于发送电子邮件的电子邮件域具有默认的 MailFrom 地址,格式为 donotreply@xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.azurecomm.net。 如果配置自定义域(例如 notification.azuremails.net),则会在默认的 MailFrom 地址中添加 donotreply@notification.azurecommtest.net。 可以配置和添加更多 MailFrom 地址和 FROM 显示名称,以使用更易读的值。

注意

无法为 Azure 托管域(不管是否有发送限制)或自定义域(具有默认发送限制)启用发件人用户名。 有关详细信息,请参阅 Azure 通信服务的服务限制

  1. 打开在开始创建电子邮件通信资源中创建的电子邮件通信服务资源的“概述”页。

  2. 单击左侧导航面板上的“预配域”以查看预配的域列表

  3. 要打开“域概述”页,请单击已预配的一个域。

    屏幕截图显示了预配的电子邮件域列表中的域链接。

  4. 单击左侧导航栏中的“MailFrom 地址”链接,查看 MailFrom 地址列表中的默认 donotreply

    屏幕截图解释了如何列出 MailFrom 地址。

  5. 单击“添加” 。

    屏幕截图解释了如何更改 MailFrom 地址和显示名称。

  6. 输入显示名称和 MailFrom 地址。 单击“ 保存”。

    屏幕截图解释了如何保存 MailFrom 地址和显示名称。

  7. 单击“保存”,在概述页中查看包含新添加的 MailFrom 地址的更新列表

    屏幕截图显示了具有更新值的 Mailfrom 地址。

电子邮件域现已准备就绪,可以通过添加的 MailFrom 地址发送电子邮件。

创建多个发件人用户名

  1. 打开“域概述”页。

  2. 单击左侧导航栏中的“MailFrom 地址”链接以查看 MailFrom 地址列表

    屏幕截图显示了 MailFrom 地址。

  3. 选择需要删除的 MailFrom 地址,然后单击“删除”

    屏幕截图显示了需要删除的 MailFrom 地址列表。

  4. 在概述页中查看更新的 MailFrom 地址列表。

    屏幕截图显示了删除后的 MailFrom 地址列表。

先决条件

创建发送方用户名资源

若要创建发送方用户名资源,请登录到 Azure CLI。 可以从终端运行 az login 命令并提供凭据进行登录。 要创建资源,请运行以下命令:

az communication email domain sender-username create --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --domain-name "contoso.com" --sender-username "contosoNewsAlerts" --username "contosoNewsAlerts"

如果要选择特定订阅,你还可以指定 --subscription 标志并提供订阅 ID。

az communication email domain sender-username create --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --domain-name "contoso.com" --sender-username "contosoNewsAlerts" --username "contosoNewsAlerts" --subscription "<subscriptionId>"

可使用以下选项来配置域资源:

  • 资源组
  • 电子邮件通信服务资源的名称。
  • 将要与资源关联的地理位置。
  • 域资源的名称。
  • 发送方用户名的名称。
  • 用户名的名称。

注意

发送方用户名和用户名应相同。

管理发送方用户名资源

若要向发送方用户名资源添加或更新显示名称,请运行以下命令。 你也可以指向特定的订阅。

az communication email domain sender-username update --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --domain-name "contoso.com" --sender-username "contosoNewsAlerts" --display-name "Contoso News Alerts"

az communication email domain sender-username update --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --domain-name "contoso.com" --sender-username "contosoNewsAlerts" --display-name "Contoso News Alerts" --subscription "<subscriptionId>"

若要列出给定域中的所有发送方用户名资源,请使用以下命令:

az communication email domain sender-username list --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --domain-name "contoso.com"

若要显示给定资源的所有相关信息,请使用以下命令:

az communication email domain sender-username show --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --domain-name "contoso.com" --sender-username "contosoNewsAlerts"

清理发送方用户名资源

如果要清理和移除发送方用户名资源,可以通过运行以下命令删除发送方用户名资源。

az communication email domain sender-username delete --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --domain-name "contoso.com" --sender-username "contosoNewsAlerts"

注意

资源删除是永久性的。如果删除资源,则无法恢复任何数据,包括事件网格筛选器、电话号码或与资源相关的其他数据。

有关其他命令的信息,请参阅发送方用户名 CLI

先决条件

安装 SDK

首先,在 C# 项目中加入通信服务管理 SDK:

using Azure.ResourceManager.Communication;

订阅 ID

你需要知道 Azure 订阅的 ID。 可以从门户获取此内容:

  1. 登录到 Azure 帐户
  2. 选择左侧边栏中的“订阅”
  3. 选择所需的任何订阅
  4. 单击“概览”
  5. 选择订阅 ID

在本快速入门中,我们假设你已将订阅 ID 存储在名为 AZURE_SUBSCRIPTION_ID 的环境变量中。

身份验证

若要与域资源进行通信,你必须首先向 Azure 验证自己的身份。

对客户端进行身份验证

创建经过身份验证的客户端的默认选项是使用 DefaultAzureCredential。 由于所有管理 API 都经过同一终结点,因此为了与资源交互,必须仅创建一个顶级 ArmClient。

要向 Azure 进行身份验证并创建 ArmClient,请执行以下代码:

using System;
using System.Threading.Tasks;
using Azure;
using Azure.Core;
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Communication;
using Azure.ResourceManager.Resources;
...
// get your azure access token, for more details of how Azure SDK get your access token, please refer to https://learn.microsoft.com/dotnet/azure/sdk/authentication?tabs=command-line
TokenCredential cred = new DefaultAzureCredential();
// authenticate your client
ArmClient client = new ArmClient(cred);

与 Azure 资源交互

现在,你已进行身份验证。

对于以下每个示例,我们会将发送方用户名资源分配给现有域资源。

如果需要创建电子邮件通信服务,可以使用 Azure 门户并创建域资源,可以使用 Azure 门户执行此操作。

创建发送方用户名资源

创建发送方用户名资源时,必须指定资源组名称、电子邮件通信服务名称、域名和资源名称。

// this example assumes you already have this CommunicationDomainResource created on azure
// for more information of creating CommunicationDomainResource, please refer to the document of CommunicationDomainResource
string subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e";
string resourceGroupName = "contosoResourceGroup";
string emailServiceName = "contosoEmailService";
string domainName = "contoso.com";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

// get the collection of this SenderUsernameResource
SenderUsernameResourceCollection collection = communicationDomainResource.GetSenderUsernameResources();

// invoke the operation
string senderUsername = "contosoNewsAlerts";
SenderUsernameResourceData data = new SenderUsernameResourceData()
{
    Username = "contosoNewsAlerts",
    DisplayName = "Contoso News Alerts",
};
ArmOperation<SenderUsernameResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, senderUsername, data);
SenderUsernameResource result = lro.Value;

// the variable result is a resource, you could call other operations on this instance as well
// but just for demo, we get its data from this resource instance
SenderUsernameResourceData resourceData = result.Data;
// for demo we just print out the id
Console.WriteLine($"Succeeded on id: {resourceData.Id}");

管理发送方用户名资源

按域资源列出

// this example assumes you already have this CommunicationDomainResource created on azure
// for more information of creating CommunicationDomainResource, please refer to the document of CommunicationDomainResource
string subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e";
string resourceGroupName = "contosoResourceGroup";
string emailServiceName = "contosoEmailService";
string domainName = "contoso.com";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

// get the collection of this SenderUsernameResource
SenderUsernameResourceCollection collection = communicationDomainResource.GetSenderUsernameResources();

// invoke the operation and iterate over the result
await foreach (SenderUsernameResource item in collection.GetAllAsync())
{
    // the variable item is a resource, you could call other operations on this instance as well
    // but just for demo, we get its data from this resource instance
    SenderUsernameResourceData resourceData = item.Data;
    // for demo we just print out the id
    Console.WriteLine($"Succeeded on id: {resourceData.Id}");
}

Console.WriteLine($"Succeeded");

获取发送方用户名

// this example assumes you already have this CommunicationDomainResource created on azure
// for more information of creating CommunicationDomainResource, please refer to the document of CommunicationDomainResource
string subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e";
string resourceGroupName = "contosoResourceGroup";
string emailServiceName = "contosoEmailService";
string domainName = "contoso.com";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

// get the collection of this SenderUsernameResource
SenderUsernameResourceCollection collection = communicationDomainResource.GetSenderUsernameResources();

// invoke the operation
string senderUsername = "contosoNewsAlerts";
bool result = await collection.ExistsAsync(senderUsername);

Console.WriteLine($"Succeeded: {result}");

清理发送方用户名资源

// this example assumes you already have this SenderUsernameResource created on azure
// for more information of creating SenderUsernameResource, please refer to the document of SenderUsernameResource
string subscriptionId = "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
string domainName = "contoso.com";
string senderUsername = "contosoNewsAlerts";
ResourceIdentifier senderUsernameResourceId = SenderUsernameResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName, senderUsername);
SenderUsernameResource senderUsernameResource = client.GetSenderUsernameResource(senderUsernameResourceId);

// invoke the operation
await senderUsernameResource.DeleteAsync(WaitUntil.Completed);

Console.WriteLine($"Succeeded");

注意

资源删除是永久性的。如果删除资源,则无法恢复任何数据,包括事件网格筛选器、电话号码或与资源相关的其他数据。

先决条件

创建发送方用户名资源

若要创建发送方用户名资源,请使用以下命令使用 Connect-AzAccount 登录到 Azure 帐户并提供凭据。

PS C:\> Connect-AzAccount

首先,请确保使用以下命令安装 Azure 通信服务模块 Az.Communication

PS C:\> Install-Module Az.Communication

运行以下命令,为自定义域创建发送方用户名:

PS C:\> New-AzEmailServiceSenderUsername -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -DomainName contoso.com -SenderUsername test -Username test

如果要选择特定订阅,还可以指定 --subscription 标志并提供订阅 ID。

PS C:\> New-AzEmailServiceSenderUsername -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -DomainName contoso.com -SenderUsername test -Username test -SubscriptionId SubscriptionID

可使用以下选项来配置域资源:

  • 资源组
  • 电子邮件通信服务资源的名称。
  • 域资源的名称。
  • 发送方用户名的名称。
  • 用户名的名称。

注意

发送方用户名和用户名应相同。

管理发送方用户名资源

若要向发送方用户名资源添加或更新显示名称,请运行以下命令。 你也可以指向特定的订阅。

PS C:\> Update-AzEmailServiceSenderUsername -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -DomainName contoso.com -SenderUsername test -Username test -DisplayName testdisplayname

PS C:\> Update-AzEmailServiceSenderUsername -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -DomainName contoso.com -SenderUsername test -Username test -DisplayName testdisplayname -SubscriptionId SubscriptionID

若要列出给定域中的所有发送方用户名资源,请使用以下命令:

PS C:\> Get-AzEmailServiceSenderUsername -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -DomainName contoso.com

若要列出给定资源的所有相关信息,请使用以下命令:

PS C:\> Get-AzEmailServiceSenderUsername -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -DomainName contoso.com -SenderUsername test

清理发送方用户名资源

如果要清理和移除发送方用户名资源,可以通过运行以下命令删除发送方用户名资源:

PS C:\> Remove-AzEmailServiceSenderUsername -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -DomainName contoso.com -SenderUsername test

注意

资源删除是永久性的。如果删除资源,则无法恢复任何数据,包括事件网格筛选器、电话号码或与资源相关的其他数据。

后续步骤