Enviar E-mail com Envio Direto do Office 365 e PowerShell

Você sabia que é possível usar o Office 365 para enviar e-mails com o PowerShell? Neste artigo, você aprenderá como enviar e-mails com o Office 365 Direct Send e o cmdlet Send-MailMessage do PowerShell.

Se você deseja obter uma explicação detalhada sobre como enviar e-mails com o PowerShell, confira este tutorial completo sobre o Send-MailMessage.

Office 365 Direct Send vs. SMTP Client Submission

Antes de nos aprofundarmos no PowerShell, saiba que não há apenas uma maneira de enviar e-mails pelo Office 365 usando o PowerShell. O Office 365 possui duas formas suportadas de enviar e-mails. Essas opções são Direct Send e SMTP Client Submission ou SMTP Authenticated Submission.

SMTP Authenticated Submission

O SMTP Authenticated Submission é o mais fácil de configurar. Você escolheria essa opção se planeja enviar e-mails de um dispositivo ou aplicativo para destinatários dentro e fora da sua organização. Não há nenhuma ação adicional a ser feita no Office 365 para permitir isso.

Essa opção permite que você use qualquer endereço de remetente. Mas o endereço deve ser de um dos seus domínios verificados e aceitos.

Para usar o SMTP Authenticated Submission, você deve:

  • Ter uma caixa de correio de usuário do Office 365 (licenciada). Esse endereço de e-mail aparecerá como o remetente da mensagem.
  • O PowerShell (ou outro cliente) deve ser capaz de resolver e alcançar smtp.office365.com.
  • A porta TCP 587 ou 25 deve estar aberta para o Office 365 a partir do cliente.

Direct Send

Aumentando um pouco a complexidade está a opção Envio Direto. Assim como a opção Envio Autenticado por SMTP, o Envio Direto permite que você use qualquer endereço de remetente. Além disso, o endereço de deve ser de um dos seus domínios verificados e aceitos.

A grande diferença entre o Envio Direto e o Envio Autenticado por SMTP é que nenhum destinatário externo é permitido. Se você precisa enviar para destinatários de e-mail fora da sua organização, o Envio Direto não funcionará para você.

O Envio Direto possui algumas de suas próprias exigências/recomendações:

  • Esse endereço de remetente não precisa ser uma caixa de correio válida, mas é necessário se você planeja receber notificações de entrega não realizada (NDRs) ou respostas usando esse endereço.
  • A porta TCP 25 está aberta do seu cliente para o Office 365.
  • O dispositivo deve ser capaz de resolver e alcançar o URL do seu ponto de extremidade MX (por exemplo, seu-domínio-com.mail.protection.outlook.com).
  • A static public IP address. This is to update your SPF record and avoid your messages getting flagged as spam (optional but recommended)

Se você não sabe como encontrar o URL do seu ponto de extremidade MX, aqui está um tutorial rápido:

  1. Acesse o Portal de Administração do Office 365.
  2. Clique em Configuração (1), selecione Domínios (2), clique no Nome do domínio (3), copie o Endereço ou valor de “Aponta para” MX (4).
Finding Office 365 MX Endpoint URL

Envio Autenticado por SMTP

O primeiro método para enviar e-mail é via Envio de Cliente SMTP ou Envio Autenticado por SMTP. Usando o cmdlet Send-MailMessage do PowerShell, podemos fornecer todos os parâmetros necessários para enviar e-mail através do Office 365.

Abaixo está um trecho que você pode usar para enviar e-mails através deste método.

Primeiro, você precisará definir um objeto PowerShell PScredential e fornecer todos os parâmetros necessários para o Send-MailMessage.

# Obtenha as credenciais
$credential = Get-Credential

## Defina os parâmetros do Send-MailMessage
$mailParams = @{
    SmtpServer                 = 'smtp.office365.com'
    Port                       = '587' # ou '25' se não estiver usando TLS
    UseSSL                     = $true ## ou não, se estiver usando sem TLS
    Credential                 = $credential
    From                       = '[email protected]'
    To                         = '[email protected]', '[email protected]'
    Subject                    = "SMTP Client Submission - $(Get-Date -Format g)"
    Body                       = 'This is a test email using SMTP Client Submission'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## Envie a mensagem
Send-MailMessage @mailParams

Ao executar o código acima, você deverá receber um e-mail recebido pelo destinatário interno (seudominio.com) e pelo domínio externo (naoseudominio.com).

Internal Email
External email

Envio direto (TLS necessário)

Semelhante ao Envio autenticado por SMTP, você pode usar quase os mesmos parâmetros para o Send-MailMessage. No entanto, desta vez, os destinatários Para serão apenas internos.

Também observe que não é necessário usar PSCredential.

## Construir parâmetros
$mailParams = @{
    SmtpServer                 = '<tenant>.mail.protection.outlook.com'
    Port                       = '25'
    UseSSL                     = $true   
    From                       = '[email protected]'
    To                         = '[email protected]'
    Subject                    = "Direct Send $(Get-Date -Format g)"
    Body                       = 'This is a test email using Direct Send'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}

## Envie o e-mail
Send-MailMessage @mailParams
Direct Send email

Resumo

Você pode ver que o Office 365 oferece duas opções diferentes para o envio de e-mails. Neste artigo, usamos o PowerShell como exemplo para demonstrar ambos. Mas você não precisa usar o PowerShell. Contanto que seu aplicativo ou linguagem de programação suporte autenticação TLS, você pode usar qualquer método que desejar.

Leitura Adicional

Source:
https://adamtheautomator.com/office-365-direct-send/