Enviar Email com Office 365 Direct Send e PowerShell

Sabia que pode 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 deseja uma análise detalhada sobre o envio de e-mails com o PowerShell, confira este tutorial detalhado sobre Send-MailMessage.

Office 365 Direct Send vs. Envio de Cliente SMTP

Antes de avançarmos muito no PowerShell, saiba que não há apenas uma maneira de enviar e-mails por meio do Office 365 usando o PowerShell. O Office 365 tem duas maneiras suportadas de enviar e-mails. Essas opções são Envio Direto e Envio de Cliente SMTP ou Envio Autenticado SMTP.

Envio Autenticado SMTP

O Envio Autenticado SMTP é o mais fácil de configurar. Você escolheria esta 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á ação extra a ser feita no Office 365 para permitir isso.

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

Para usar Envio Autenticado SMTP, você deve:

  • Ter uma caixa de correio de usuário do Office 365 (licenciada). Este 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.

Envio Direto

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

A grande diferença entre Envio Direto e Submissão Autenticada SMTP é que não são permitidos destinatários externos. Se você precisar enviar para destinatários de e-mail fora da sua organização, o Envio Direto não funcionará para você.

O Envio Direto tem alguns requisitos/recomendações próprios:

  • Este endereço de remetente não precisa ser uma caixa de correio válida. Mas é necessário se você planeja receber NDRs ou respostas usando este 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 endpoint 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 souber como encontrar o URL do seu endpoint MX, aqui está um tutorial rápido:

  1. Faça login no 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 apontados pelo MX (4).
Finding Office 365 MX Endpoint URL

Submissão Autenticada SMTP

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

Abaixo está um trecho que você pode usar para enviar e-mails por este método.

Primeiro, você precisará definir um objeto PowerShell PScredential e fornecer todos os parâmetros necessários para 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 não-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 enviado para o destinatário interno (seudominio.com) e para o domínio externo (nãoseudominio.com).

Internal Email
External email

Envio Direto (TLS Necessário)

Semelhante à Submissão Autenticada via SMTP, você pode usar praticamente os mesmos parâmetros para Send-MailMessage. No entanto, desta vez, os destinatários do To serão apenas internos.

Observe também que não foi necessário um PSCredential.

## Construa os 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 enviar e-mails. Neste artigo, usamos o PowerShell como exemplo para demonstrar ambas as opções. Mas você não precisa usar o PowerShell. Contanto que sua aplicação ou linguagem de programação suporte autenticação TLS, você pode usar qualquer método que preferir.

Leitura Adicional

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