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

快速入门:如何添加自定义经验证的电子邮件域

本快速入门介绍如何在 Azure 通信服务中预配自定义经验证的电子邮件域。

先决条件

预配自定义域

若要预配自定义域,需要:

  • 通过在域名系统 (DNS) 中添加 TXT 记录来验证自定义域所有权。
  • 通过添加发件人策略框架 (SPF) 和 DomainKeys 标识邮件 (DKIM) 记录来配置发件人身份验证。

验证自定义域

在本部分中,你通过在 DNS 中添加 TXT 记录来验证自定义域所有权。

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

  2. 使用以下选项之一创建自定义域。

    • (选项 1)单击“设置自定义域”下的“设置”按钮。 继续执行步骤 3

      显示如何设置自定义域的屏幕截图。

    • (选项 2)单击左侧导航面板上的“预配域”。

      显示指向“预配域”页的导航链接的屏幕截图。

    • 单击上部导航栏中的“添加域”。

    • 从下拉列表中选择“自定义域”。

  3. 单击“添加自定义域”。

  4. 在文本框中输入域名。

  5. 在下一个文本框中再次输入域名。

  6. 单击“确认” 。

    显示输入自定义域值的位置的屏幕截图。

  7. 请确保输入的域名正确,两个文本框内都相同。 如果需要,请单击“编辑”以更正域名,然后确认。

  8. 单击“添加” 。

    显示如何添加所选自定义域的屏幕截图。

  9. Azure 通信服务会为你的域创建一个自定义域配置。

    显示自定义域部署进度的屏幕截图。

  10. 若要验证域所有权,请单击“验证域”。

    屏幕截图显示已成功添加自定义域以进行验证。

  11. 若要稍后继续验证,请单击“关闭”并继续。 然后,若要继续从预配域进行验证,请单击“配置”。

    显示已添加的域已准备好在预配域列表中进行验证的屏幕截图。

  12. 选择“验证域”或“配置”时,它会打开“通过 TXT 记录验证域”对话框。

    显示“配置”链接的屏幕截图,需要单击该链接来验证域所有权。

  13. 将之前的 TXT 记录添加到域注册机构或 DNS 托管服务提供商。 有关为 DNS 提供程序添加 TXT 记录的信息,请参阅 TXT 记录部分。

    完成此步骤后,单击“下一步”。

  14. 验证 TXT 记录是否已在 DNS 中成功创建,然后单击“完成”。

  15. DNS 更改需要 15 到 30 分钟才能生效。 单击“关闭” 。

    显示正在验证域的屏幕截图。

  16. 验证域后,可以添加 SPF 和 DKIM 记录来对域进行身份验证。

    显示自定义域已验证的屏幕截图。

为自定义域配置发件人身份验证

若要为域配置发件人身份验证,你需要添加更多域名服务 (DNS) 记录。 本部分介绍 Azure 通信服务如何为你提供添加到 DNS 的记录。 但是,根据你注册的域是根域还是子域,你需要将记录添加到相应的区域,或者对自动生成的记录进行更改。

本部分介绍如何为自定义域 sales.us.notification.azurecommtest.net 添加 SPF 和 DKIM 记录。 以下示例介绍了四种不同的方法,用于将这些记录添加到 DNS,具体取决于要添加记录的区域级别。

  1. 区域:sales.us.notification.azurecommtest.net
记录 类型 名称
SPF TXT sales.us.notification.azurecommtest.net v=spf1 include:spf.protection.outlook.com -all
DKIM CNAME selector1-azurecomm-prod-net._domainkey selector1-azurecomm-prod-net._domainkey.azurecomm.net
DKIM2 CNAME selector2-azurecomm-prod-net._domainkey selector2-azurecomm-prod-net._domainkey.azurecomm.net

门户生成的记录假定你将这些记录添加到此区域中的 DNS:sales.us.notification.azurecommtest.net

  1. 区域:us.notification.azurecommtest.net
记录 类型 名称
SPF TXT 销售额 v=spf1 include:spf.protection.outlook.com -all
DKIM CNAME selector1-azurecomm-prod-net._domainkey.sales selector1-azurecomm-prod-net._domainkey.azurecomm.net
DKIM2 CNAME selector2-azurecomm-prod-net._domainkey.sales selector2-azurecomm-prod-net._domainkey.azurecomm.net
  1. 区域:notification.azurecommtest.net
记录 类型 名称
SPF TXT sales.us v=spf1 include:spf.protection.outlook.com -all
DKIM CNAME selector1-azurecomm-prod-net._domainkey.sales.us selector1-azurecomm-prod-net._domainkey.azurecomm.net
DKIM2 CNAME selector2-azurecomm-prod-net._domainkey.sales.us selector2-azurecomm-prod-net._domainkey.azurecomm.net
  1. 区域:azurecommtest.net
记录 类型 名称
SPF TXT sales.us.notification v=spf1 include:spf.protection.outlook.com -all
DKIM CNAME selector1-azurecomm-prod-net._domainkey.sales.us.notification selector1-azurecomm-prod-net._domainkey.azurecomm.net
DKIM2 CNAME selector2-azurecomm-prod-net._domainkey.sales.us.notification selector2-azurecomm-prod-net._domainkey.azurecomm.net

添加 SPF 和 DKIM 记录

在此部分中,通过添加发件人策略框架 (SPF) 和 DomainKeys 标识邮件 (DKIM) 记录来配置发件人身份验证。

  1. 打开“预配域”,并确认“域状态”处于 Verified 状态。

  2. 若要添加 SPF 和 DKIM 信息,请单击“配置”。

  3. 将以下 TXT 记录和 CNAME 记录添加到域注册机构或 DNS 托管服务提供商。 有关为 DNS 提供商添加 TXT 和 CNAME 记录的信息,请参阅在常用域注册机构表中添加 DNS 记录

    屏幕截图显示了需要添加的 DNS 记录,以便对已验证域进行 SPF 验证。屏幕截图显示了需要为 DKIM 添加的 DNS 记录。屏幕截图显示了需要为其他 DKIM 记录添加的 DNS 记录。

  4. 添加 TXT 和 CNAME 信息后,单击“下一步”继续。

  5. 验证是否已在 DNS 中成功创建 TXT 和 CNAME 记录。 然后单击“完成”。

    显示需要为 S P F 和 D K I M 添加的 DNS 记录的屏幕截图。

  6. DNS 更改将在 15 到 30 分钟内生效。 单击“关闭”并等待验证完成。

    显示正在验证发送方身份的屏幕截图。

  7. 在“预配域”页中检查验证状态。

    显示发送方身份验证已完成的屏幕截图。

  8. 验证了发件人身份验证配置后,你的电子邮件域就准备好通过自定义域发送电子邮件了。

    显示已验证的自定义域已准备好发送电子邮件的屏幕截图。

先决条件

预配自定义域

若要预配自定义域,需要:

  • 通过在域名系统 (DNS) 中添加 TXT 记录来验证自定义域所有权。
  • 通过添加发件人策略框架 (SPF) 和 DomainKeys 标识邮件 (DKIM) 记录来配置发件人身份验证。

创建域资源

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

az communication email domain create --domain-name "contoso.com" --email-service-name "<EmailServiceName>" --location "Global" --resource-group "<resourceGroup>" --domain-management CustomerManaged

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

az communication email domain create --domain-name "contoso.com" --email-service-name "<EmailServiceName>" --location "Global" --resource-group "<resourceGroup>" --domain-management CustomerManaged --subscription "<subscriptionId>"

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

  • 资源组
  • 电子邮件通信服务资源的名称。
  • 将要与资源关联的地理位置。
  • 域资源的名称。
  • 域管理属性的值。
    • 对于自定义域,该值应为 CustomerManaged。

在下一步中,可以为域资源分配标签或更新用户参与度跟踪。 使用标记组织域资源。 有关标记的详细信息,请参阅资源标记文档

管理域资源

若要为域资源添加标签或更新用户参与度跟踪,请运行以下命令。 你也可以指向特定的订阅。

az communication email domain update --domain-name "contoso.com" --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --tags newTag="newVal1" --user-engmnt-tracking Enabled

az communication email domain update --domain-name "contoso.com" --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --tags newTag="newVal1" --user-engmnt-tracking Disabled --subscription "<subscriptionId>"

若要列出给定电子邮件通信服务中的所有域资源,请使用以下命令:

az communication email domain list --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>"

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

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

域资源的验证操作

若要为域配置发件人身份验证,请参阅 Azure 门户选项卡中的“为自定义域配置发件人身份验证”部分。

启动验证

若要启动域验证,请运行以下命令:

az communication email domain initiate-verification --domain-name "contoso.com" --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --verification-type Domain

取消验证

若要取消域验证,请运行以下命令:

az communication email domain cancel-verification --domain-name "contoso.com" --email-service-name "<EmailServiceName>" --resource-group "<resourceGroup>" --verification-type Domain

清理域资源

如果要清理和删除域资源,可以通过运行以下命令进行删除。

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

注意

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

有关其他命令的信息,请参阅域 CLI

先决条件

预配自定义域

若要预配自定义域,需要:

  • 通过在域名系统 (DNS) 中添加 TXT 记录来验证自定义域所有权。
  • 通过添加发件人策略框架 (SPF) 和 DomainKeys 标识邮件 (DKIM) 记录来配置发件人身份验证。

安装 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 门户执行该操作。

创建域资源

创建域资源时,需指定资源组名称、电子邮件通信服务名称、资源名称和 DomainManagement。

注意

Location 属性始终为 global

// this example assumes you already have this EmailServiceResource created on azure
// for more information of creating EmailServiceResource, please refer to the document of EmailServiceResource
string subscriptionId = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
ResourceIdentifier emailServiceResourceId = EmailServiceResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName);
EmailServiceResource emailServiceResource = client.GetEmailServiceResource(emailServiceResourceId);

// get the collection of this CommunicationDomainResource
CommunicationDomainResourceCollection collection = emailServiceResource.GetCommunicationDomainResources();

// invoke the operation
string domainName = "contoso.com";
CommunicationDomainResourceData data = new CommunicationDomainResourceData(new AzureLocation("Global"))
{
    DomainManagement = DomainManagement.CustomerManaged,
};
ArmOperation<CommunicationDomainResource> lro = await collection.CreateOrUpdateAsync(WaitUntil.Completed, domainName, data);            
CommunicationDomainResource 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
CommunicationDomainResourceData 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 = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
string domainName = "contoso.com";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

// invoke the operation
CommunicationDomainResourcePatch patch = new CommunicationDomainResourcePatch()
{
    UserEngagementTracking = UserEngagementTracking.Enabled,
};
ArmOperation<CommunicationDomainResource> lro = await communicationDomainResource.UpdateAsync(WaitUntil.Completed, patch);
CommunicationDomainResource 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
CommunicationDomainResourceData 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 EmailServiceResource created on azure
// for more information of creating EmailServiceResource, please refer to the document of EmailServiceResource
string subscriptionId = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
ResourceIdentifier emailServiceResourceId = EmailServiceResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName);
EmailServiceResource emailServiceResource = client.GetEmailServiceResource(emailServiceResourceId);

// get the collection of this CommunicationDomainResource
CommunicationDomainResourceCollection collection = emailServiceResource.GetCommunicationDomainResources();

// invoke the operation and iterate over the result
await foreach (CommunicationDomainResource 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
    CommunicationDomainResourceData 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 EmailServiceResource created on azure
// for more information of creating EmailServiceResource, please refer to the document of EmailServiceResource
string subscriptionId = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
ResourceIdentifier emailServiceResourceId = EmailServiceResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName);
EmailServiceResource emailServiceResource = client.GetEmailServiceResource(emailServiceResourceId);

// get the collection of this CommunicationDomainResource
CommunicationDomainResourceCollection collection = emailServiceResource.GetCommunicationDomainResources();

// invoke the operation
string domainName = "contoso.com";
bool result = await collection.ExistsAsync(domainName);

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

域资源的验证操作

若要为域配置发件人身份验证,请参阅 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 = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
string domainName = "contoso.com";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

// invoke the operation
DomainsRecordVerificationContent content = new DomainsRecordVerificationContent(DomainRecordVerificationType.Spf);
await communicationDomainResource.InitiateVerificationAsync(WaitUntil.Completed, content);

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 = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
string domainName = "contoso.com";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

// invoke the operation
DomainsRecordVerificationContent content = new DomainsRecordVerificationContent(DomainRecordVerificationType.Spf);
await communicationDomainResource.CancelVerificationAsync(WaitUntil.Completed, content);

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 = "11112222-3333-4444-5555-666677778888";
string resourceGroupName = "MyResourceGroup";
string emailServiceName = "MyEmailServiceResource";
string domainName = "contoso.com";
ResourceIdentifier communicationDomainResourceId = CommunicationDomainResource.CreateResourceIdentifier(subscriptionId, resourceGroupName, emailServiceName, domainName);
CommunicationDomainResource communicationDomainResource = client.GetCommunicationDomainResource(communicationDomainResourceId);

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

Console.WriteLine($"Succeeded");

注意

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

先决条件

预配自定义域

若要预配自定义域,需要:

  • 通过在域名系统 (DNS) 中添加 TXT 记录来验证自定义域所有权。
  • 通过添加发件人策略框架 (SPF) 和 DomainKeys 标识邮件 (DKIM) 记录来配置发件人身份验证。

创建域资源

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

PS C:\> Connect-AzAccount

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

PS C:\> Install-Module Az.Communication

请运行以下命令来创建自定义托管域资源:

PS C:\> New-AzEmailServiceDomain -ResourceGroupName ContosoResourceProvider1 -EmailServiceName ContosoEmailServiceResource1 -Name contoso.com -DomainManagement CustomerManaged

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

  • 资源组
  • 电子邮件通信服务资源的名称。
  • 域资源的名称。
  • 域管理属性的值。
    • 对于自定义域,该值应为“CustomerManaged”。

在下一步中,可以为域资源分配标签或更新用户参与度跟踪。 使用标记组织域资源。 有关标记的详细信息,请参阅资源标记文档

管理域资源

若要为域资源添加标签或更新用户参与度跟踪,请运行以下命令。 你也可以指向特定的订阅。

PS C:\> Update-AzEmailServiceDomain -Name contoso.com -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1 -Tag @{ExampleKey1="ExampleValue1"} -UserEngagementTracking 1

PS C:\> Update-AzEmailServiceDomain -Name contoso.com -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1 -Tag @{ExampleKey1="ExampleValue1"} -UserEngagementTracking 0 -SubscriptionId SubscriptionID

若要列出给定电子邮件通信服务中的所有域资源,请使用以下命令:

PS C:\> Get-AzEmailServiceDomain -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1

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

PS C:\> Get-AzEmailServiceDomain -Name contoso.com -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1

域资源的验证操作

若要为域配置发件人身份验证,请参阅 Azure 门户选项卡中的“为自定义域配置发件人身份验证”部分。

启动验证

若要调用域验证,请运行以下命令:

PS C:\> Invoke-AzEmailServiceInitiateDomainVerification -DomainName contoso.com -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1 -VerificationType Domain

取消验证

若要停止域验证,请运行以下命令:

PS C:\> Stop-AzEmailServiceDomainVerification -DomainName contoso.com -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1 -VerificationType Domain

清理域资源

如果要清理和删除域资源,可以通过运行以下命令来删除域资源:

PS C:\> Remove-AzEmailServiceDomain -Name contoso.com -EmailServiceName ContosoEmailServiceResource1 -ResourceGroupName ContosoResourceProvider1

注意

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

Azure 托管域与自定义域的比较

在预配自定义电子邮件域之前,请查看下表以确定哪种域类型最能满足你的需求。

Azure 托管域 自定义域
优点 - 设置快速且简单
- 无需验证域
- 电子邮件将从你自己的域发送
缺点 - 发件人域未个性化,无法更改
- 无法个性化发件人用户名
- 发送量有限
- 无法启用用户参与跟踪
- 需要验证域记录
- 验证设置时间更长

更改自定义域的 MailFrom 和 FROM 显示名称

可以选择性地将 MailFrom 地址配置为默认的 DoNotReply 以外的地址,并将多个发件人用户名添加到你的域。 有关如何配置发件人地址的详细信息,请参阅快速入门:如何添加多个发件人地址

电子邮件域现已准备好发送电子邮件。

TXT 记录

以下链接提供了有关如何使用常用域注册器添加 TXT 记录的说明。

注册机构名称 文档链接
IONOS by 1 & 1 步骤 1-7
123-reg.co.uk 步骤 1-6
Amazon Web Services (AWS) 步骤 1-8
Cloudflare 步骤 1-6
GoDaddy 步骤 1-6
Namecheap 步骤 1-9
Network Solutions 步骤 1=9
OVH 步骤 1-9
web.com 步骤 1-8
Wix 步骤 1-5
其他(常规) 步骤 1-4

CNAME 记录

以下链接提供了有关如何使用常用域注册器添加 CNAME 记录的详细信息。 请确保使用配置窗口中的值,而不是文档链接中的示例。

注册机构名称 文档链接
IONOS by 1 & 1 步骤 1-10
123-reg.co.uk 步骤 1-6
Amazon Web Services (AWS) 步骤 1-8
Cloudflare 步骤 1-6
GoDaddy 步骤 1-6
Namecheap 步骤 1-8
Network Solutions 步骤 1=9
OVH 步骤 1-8
web.com 步骤 1-8
Wix 步骤 1-5
其他(常规) 指南

后续步骤