Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo descreve como usar XOAuth2 para autenticação ao enviar emails usando o protocolo SMTP e os Serviços de Comunicação do Azure.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.
- A versão mais recente da biblioteca de cliente .NET Core para o seu sistema operativo.
- Um recurso de email de comunicação do Azure criado e pronto com um domínio provisionado Introdução à criação de recurso de comunicação por email.
- Um Recurso ativo dos Serviços de Comunicação do Azure conectado ao Domínio de Email e a uma Cadeia de Conexão. Comece conectando um recurso de e-mail com um recurso de comunicação.
- Credenciais SMTP criadas usando um aplicativo Microsoft Entra ID com acesso ao Recurso de Serviços de Comunicação do Azure. Como criar credenciais de autenticação para enviar e-mails usando SMTP.
Concluir este exemplo incorre em um pequeno custo de alguns centavos de dólar ou menos em sua conta do Azure.
Observação
Você também pode enviar um e-mail do seu próprio domínio verificado. Consulte Adicionar domínios verificados personalizados ao Serviço de Comunicação por Email.
Este artigo descreve como enviar email com os Serviços de Comunicação do Azure usando SMTP.
Verificação de pré-requisitos
- Numa janela de terminal ou de comandos, execute o comando
dotnet
para verificar se a biblioteca de cliente .NET está instalada. - Para exibir os subdomínios associados ao seu Recurso de Email de Comunicação do Azure, entre no portal do Azure, localize seu Recurso de Email de Comunicação do Azure e abra a guia Provisionar domínios no painel de navegação esquerdo.
Crie uma nova aplicação C#
Numa janela de consola (como cmd, PowerShell ou Bash), utilize o comando dotnet new
para criar uma nova aplicação de consola com o nome EmailQuickstart
. Este comando cria um projeto C# simples "Hello World" com um único ficheiro de origem: Program.cs.
dotnet new console -o EmailSmtpQuickstart
Altere o seu diretório para a pasta da aplicação recém-criada e use o comando dotnet build
para compilar a sua aplicação.
cd EmailSmtpQuickstart
dotnet build
Adicione o pacote MailKit.
dotnet add package MailKit
Recuperar um token Entra para autenticação SMTP OAuth
Conclua as etapas a seguir para recuperar um token de ID do Microsoft Entra. Substitua os detalhes do aplicativo Microsoft Entra ID pelos valores do aplicativo Entra usados para criar o nome de usuário SMTP.
using MailKit.Net.Smtp;
using MailKit.Security;
using Microsoft.Identity.Client;
using MimeKit;
using System.Net;
// Microsoft Entra ID (Azure AD) credentials
string smtpUsername = "<SMTP Username of the ACS Resource>";
string entraAppId = "<Entra Application ID>";
string entraAppClientSecret = "<Entra Application Client Secret>";
string tenantId = "<Entra Tenant ID>";
string entraAuthority = "https://login.microsoftonline.com/common/";
// Build the MSAL confidential client application
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder
.Create(entraAppId)
.WithClientSecret(entraAppClientSecret)
.WithAuthority(new Uri(entraAuthority))
.WithTenantId(tenantId)
.Build();
// Define the resource scope
string[] scopes = new string[] { "https://communication.azure.com/.default" };
// Acquire token for the client
AuthenticationResult result = await app.AcquireTokenForClient(scopes)
.ExecuteAsync();
string token = result.AccessToken;
Construa a sua mensagem de e-mail
Para construir uma mensagem de e-mail, você precisa:
- Defina o assunto e o corpo do e-mail.
- Defina o seu endereço de remetente. Você recebe o seu endereço MailFrom do seu domínio verificado.
- Defina o endereço do destinatário.
Substitua pelos detalhes do seu domínio e modifique o conteúdo e os detalhes do destinatário conforme necessário
string smtpHostUrl = "smtp.azurecomm.net";
string senderAddress = "<Mailfrom Address>";
string recipientAddress = "<Recipient Email Address>";
string subject = "Welcome to Azure Communication Service Email SMTP";
string body = "This email message is sent from Azure Communication Service Email using SMTP.";
Envie um e-mail usando o MailKit.
var message = new MimeMessage();
message.From.Add(new MailboxAddress("Sender Name", senderAddress));
message.To.Add(new MailboxAddress("Recipient Name", recipientAddress));
message.Subject = subject;
message.Body = new TextPart("plain")
{
Text = body
};
using (var client = new SmtpClient())
{
client.Connect(smtpHostUrl, 587, SecureSocketOptions.StartTls);
// Use the access token to authenticate
var oauth2 = new SaslMechanismOAuth2(smtpUsername, token);
client.Authenticate(oauth2);
client.Send(message);
client.Disconnect(true);
}