

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Teste de sua conexão com a interface SMTP do Amazon SES usando a linha de comando
<a name="send-email-smtp-client-command-line"></a>

Você pode usar os métodos descritos nesta seção a partir da linha de comando para testar sua conexão com o endpoint SMTP do Amazon SES, validar suas credenciais SMTP e solucionar problemas de conexão. Esses procedimentos usam ferramentas e bibliotecas que estão incluídas nos sistemas operacionais mais comuns.

Para obter informações adicionais sobre como solucionar problemas de conexão SMTP, consulte [Problemas de SMTP do Amazon SES](troubleshoot-smtp.md).

## Pré-requisitos
<a name="send-email-smtp-client-command-line-prereqs"></a>

Ao conectar-se à interface SMTP do Amazon SES, é necessário fornecer um conjunto de credenciais SMTP. Essas credenciais SMTP são diferentes das suas credenciais padrão AWS . Os dois tipos de credenciais não são intercambiáveis. Para obter mais informações sobre como obter as credenciais de SMTP, consulte [Obtenção de credenciais SMTP do Amazon SES](smtp-credentials.md).

## Como testar sua conexão com a interface SMTP do Amazon SES
<a name="send-email-smtp-client-command-line-testing"></a>

É possível usar a linha de comando para testar sua conexão com a interface SMTP do Amazon SES sem autenticar e sem enviar nenhuma mensagem. Esse procedimento é útil para solucionar problemas básicos de conectividade. Se sua conexão de teste falhar, consulte [Problemas de SMTP](troubleshoot-smtp.md).

Esta seção inclui procedimentos para testar sua conexão usando o OpenSSL (que está incluído na maioria das distribuições Linux, macOS e Unix e também está disponível para Windows) e `Test-NetConnection` o cmdlet PowerShell em (incluído nas versões mais recentes do Windows).

------
#### [ Linux, macOS, or Unix ]

Há duas maneiras de se conectar à interface SMTP do Amazon SES com OpenSSL: usando SSL explícito na porta 587 ou usando SSL implícito na porta 465.

**Como se conectar à interface SMTP usando SSL explícito**
+ Na linha de comando, insira o seguinte comando para se conectar ao servidor SMTP do Amazon SES:

  ```
  openssl s_client -crlf -quiet -starttls smtp -connect {{email-smtp.us-west-2.amazonaws.com}}:587
  ```

  No comando anterior, {{email-smtp.us-west-2.amazonaws.com}} substitua pela URL do endpoint SMTP do Amazon SES para sua região. AWS Para obter mais informações, consulte [Regiões e o Amazon SES](regions.md).

  Se a conexão for bem-sucedida, você verá um resultado semelhante a este:

  ```
  depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
  verify return:1
  depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
  verify return:1
  depth=0 CN = email-smtp.us-west-2.amazonaws.com
  verify return:1
  250 Ok
  ```

  A conexão se fecha automaticamente após cerca de 10 segundos de inatividade.

Como alternativa, é possível usar SSL implícito para se conectar à interface SMTP pela porta 465.

**Como conectar-se à interface SMTP usando SSL implícito**
+ Na linha de comando, insira o seguinte comando para se conectar ao servidor SMTP do Amazon SES:

  ```
  openssl s_client -crlf -quiet -connect {{email-smtp.us-west-2.amazonaws.com}}:465
  ```

  No comando anterior, {{email-smtp.us-west-2.amazonaws.com}} substitua pela URL do endpoint SMTP do Amazon SES para sua região. AWS Para obter mais informações, consulte [Regiões e o Amazon SES](regions.md).

  Se a conexão for bem-sucedida, você verá um resultado semelhante a este:

  ```
  depth=2 C = US, O = Amazon, CN = Amazon Root CA 1
  verify return:1
  depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon
  verify return:1
  depth=0 CN = email-smtp.us-west-2.amazonaws.com
  verify return:1
  220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-VCSHDP1YZ A1b2C3d4E5f6G7h8I9j0
  ```

  A conexão se fecha automaticamente após cerca de 10 segundos de inatividade.

------
#### [ PowerShell ]

Você pode usar o NetConnection cmdlet [Test-](https://docs.microsoft.com/en-us/powershell/module/nettcpip/test-netconnection) PowerShell para se conectar ao servidor SMTP do Amazon SES.

**nota**  
O cmdlet `Test-NetConnection` pode determinar se o computador pode se conectar ao endpoint SMTP do Amazon SES. No entanto, isso não testa se o computador pode estabelecer uma conexão SSL implícita ou explícita com o endpoint SMTP. Para testar uma conexão SSL, é possível instalar o OpenSSL para Windows para enviar um e-mail de teste.

**Como conectar-se à interface SMTP usando o cmdlet `Test-NetConnection`**
+ Em PowerShell, insira o seguinte comando para se conectar ao servidor SMTP do Amazon SES:

  ```
  Test-NetConnection -Port {{587}} -ComputerName {{email-smtp.us-west-2.amazonaws.com}}
  ```

  No comando anterior, {{email-smtp.us-west-2.amazonaws.com}} substitua pela URL do endpoint SMTP do Amazon SES da sua AWS região e {{587}} substitua pelo número da porta. Para obter mais informações sobre endpoints regionais no Amazon SES, consulte [Regiões e o Amazon SES](regions.md).

  Se a conexão foi bem-sucedida, é exibida uma saída semelhante a este exemplo:

  ```
  ComputerName     : email-smtp.us-west-2.amazonaws.com
  RemoteAddress    : 198.51.100.126
  RemotePort       : 587
  InterfaceAlias   : Ethernet
  SourceAddress    : 203.0.113.46
  TcpTestSucceeded : True
  ```

------

## Uso da linha de comando para enviar e-mail usando a interface SMTP do Amazon SES
<a name="send-email-using-openssl"></a>

Também é possível usar a linha de comando para enviar mensagens usando a interface SMTP do Amazon SES. Esse procedimento é útil para testar credenciais SMTP e para testar a capacidade de destinatários específicos receberem mensagens enviadas usando o Amazon SES.

------
#### [ Linux, macOS, or Unix ]

Quando um remetente de e-mail se conecta a um servidor SMTP, o cliente envia um conjunto padrão de solicitações e o servidor responde a cada solicitação com uma resposta padrão. Esta série de solicitações e respostas é chamada de *conversa SMTP*. Quando você se conecta ao servidor SMTP do Amazon SES usando o OpenSSL, o servidor espera que ocorra uma conversa SMTP.

Ao usar o OpenSSL para se conectar à interface SMTP, é necessário codificar suas credenciais SMTP usando a codificação em base64. Esta seção inclui procedimentos para a codificação das credenciais usando base64.

**Para enviar um e-mail da linha de comando usando a interface SMTP**

1. Digite o seguinte na linha de comando e {{email-smtp.us-west-2.amazonaws.com}} substitua pela URL do endpoint SMTP do Amazon SES para o seu. Região da AWS Para obter mais informações, consulte[Regiões e o Amazon SES](regions.md). :

   ```
    1. #!/bin/bash
    2. 
    3. # Prompt user to provide following information
    4. read -p "Configuration set: " CONFIGSET
    5. read -p "Enter SMTP username: " SMTPUsername
    6. read -p "Enter SMTP password: " SMTPPassword
    7. read -p "Sender email address: " MAILFROM
    8. read -p "Receiver email address: " RCPT
    9. read -p "Email subject: " SUBJECT
   10. read -p "Message to send: " DATA
   11. 
   12. echo
   13. 
   14. # Encode SMTP username and password using base64
   15. EncodedSMTPUsername=$(echo -n "$SMTPUsername" | openssl enc -base64)
   16. EncodedSMTPPassword=$(echo -n "$SMTPPassword" | openssl enc -base64)
   17. 
   18. # Construct the email
   19. Email="EHLO example.com
   20. AUTH LOGIN
   21. $EncodedSMTPUsername
   22. $EncodedSMTPPassword
   23. MAIL FROM: $MAILFROM
   24. RCPT TO: $RCPT
   25. DATA
   26. X-SES-CONFIGURATION-SET: $CONFIGSET
   27. From: $MAILFROM
   28. To: $RCPT
   29. Subject: $SUBJECT
   30. 
   31. $DATA
   32. .
   33. QUIT"
   34. 
   35. echo "$Email" | openssl s_client -crlf -quiet -starttls smtp -connect {{email-smtp.us-west-2.amazonaws.com}}:587
   ```

1. No prompt de cada variável, insira seus valores.

1. 
   + Para enviar usando SSL implícito pela porta 465, use:

     ```
     openssl s_client -crlf -quiet -connect {{email-smtp.us-west-2.amazonaws.com}}:465
     ```

   Se a mensagem tiver sido aceita pelo Amazon SES, você verá uma saída semelhante ao seguinte exemplo:

   ```
   250 Ok 01010160d7de98d8-21e57d9a-JZho-416c-bbe1-8ebaAexample-000000
   ```

   A sequência de números e texto que se segue a `250 Ok` é o ID de mensagem do e-mail.
**nota**  
A conexão é fechada automaticamente após cerca de 10 segundos de inatividade.

------
#### [ PowerShell ]

Você pode usar o [Net.Mail. SmtpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.8)classe para enviar e-mail usando SSL explícito pela porta 587.

**nota**  
A classe `Net.Mail.SmtpClient` está oficialmente obsoleta e a Microsoft recomenda o uso de bibliotecas de terceiros. Este código destina-se somente para fins de teste e não deve ser usado para cargas de trabalho de produção.

**Para enviar um e-mail PowerShell usando SSL explícito**

1. Em um editor de texto, crie um novo arquivo. Cole o seguinte código no arquivo:

   ```
   function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) {
       $Credentials = [Net.NetworkCredential](Get-Credential)
   
       $SMTPClient = New-Object Net.Mail.SmtpClient($Server, $Port)
       $SMTPClient.EnableSsl = $true
       $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Credentials.Username, $Credentials.Password);
   
       try {
           Write-Output "Sending message..."
           $SMTPClient.Send($Sender, $Recipient, $Subject, $Body)
           Write-Output "Message successfully sent to $($Recipient)"
       } catch [System.Exception] {
           Write-Output "An error occurred:"
           Write-Error $_
       }
   }
   
   function SendTestEmail(){
       $Server = "{{email-smtp.us-west-2.amazonaws.com}}"
       $Port = 587
   
       $Subject = "Test email sent from Amazon SES"
       $Body = "This message was sent from Amazon SES using PowerShell (explicit SSL, port 587)."
   
       $Sender = "{{sender@example.com}}"
       $Recipient = "{{recipient@example.com}}"
   
       SendEmail $Server $Port $Sender $Recipient $Subject $Body
   }
   
   SendTestEmail
   ```

   Ao concluir, salve o arquivo como `SendEmail.ps1`.

1. Faça as seguintes alterações no arquivo que você criou na etapa anterior:
   + {{sender@example.com}}Substitua pelo endereço de e-mail do qual você deseja enviar a mensagem.
   + {{recipient@example.com}}Substitua pelo endereço de e-mail para o qual você deseja enviar a mensagem.
   + {{email-smtp.us-west-2.amazonaws.com}}Substitua pela URL do endpoint SMTP do Amazon SES para sua AWS região. Para obter mais informações, consulte [Regiões e o Amazon SES](regions.md).

1. Em PowerShell, digite o seguinte comando:

   ```
   .\{{path\to\SendEmail.ps1}}
   ```

   No comando anterior, {{path\\to\\SendEmail.ps1}} substitua pelo caminho para o arquivo que você criou na etapa 1.

1. Quando solicitado, insira o nome de usuário e senha do SMTP.

Como alternativa, você pode usar o [System.Web.Mail. SmtpMail](https://docs.microsoft.com/en-us/dotnet/api/system.web.mail.smtpmail?view=netframework-4.8)classe para enviar e-mail usando SSL implícito pela porta 465.

**nota**  
A classe `System.Web.Mail.SmtpMail` está oficialmente obsoleta e a Microsoft recomenda o uso de bibliotecas de terceiros. Este código destina-se somente para fins de teste e não deve ser usado para cargas de trabalho de produção.

**Para enviar um e-mail PowerShell usando SSL implícito**

1. Em um editor de texto, crie um novo arquivo. Cole o seguinte código no arquivo:

   ```
   [System.Reflection.Assembly]::LoadWithPartialName("System.Web") > $null
   
   function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) {
       $Credentials = [Net.NetworkCredential](Get-Credential)
   
       $mail = New-Object System.Web.Mail.MailMessage
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", $Server)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", $Port)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", $true)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", $Credentials.UserName)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", $Credentials.Password)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout", $timeout / 1000)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)
   
       $mail.From = $Sender
       $mail.To = $Recipient
       $mail.Subject = $Subject
       $mail.Body = $Body
   
       try {
           Write-Output "Sending message..."
           [System.Web.Mail.SmtpMail]::Send($mail)
           Write-Output "Message successfully sent to $($Recipient)"
       } catch [System.Exception] {
           Write-Output "An error occurred:"
           Write-Error $_
       }
   }
   
   function SendTestEmail(){
       $Server = "{{email-smtp.us-west-2.amazonaws.com}}"
       $Port = 465
       
       $Subject = "Test email sent from Amazon SES"
       $Body = "This message was sent from Amazon SES using PowerShell (implicit SSL, port 465)."
   
       $Sender = "{{sender@example.com}}"
       $Recipient = "{{recipient@example.com}}"
   
       SendEmail $Server $Port $Sender $Recipient $Subject $Body
   }
   
   SendTestEmail
   ```

   Ao concluir, salve o arquivo como `SendEmail.ps1`.

1. Faça as seguintes alterações no arquivo que você criou na etapa anterior:
   + {{sender@example.com}}Substitua pelo endereço de e-mail do qual você deseja enviar a mensagem.
   + {{recipient@example.com}}Substitua pelo endereço de e-mail para o qual você deseja enviar a mensagem.
   + {{email-smtp.us-west-2.amazonaws.com}}Substitua pela URL do endpoint SMTP do Amazon SES para sua AWS região. Para obter mais informações, consulte [Regiões e o Amazon SES](regions.md).

1. Em PowerShell, digite o seguinte comando:

   ```
   .\{{path\to\SendEmail.ps1}}
   ```

   No comando anterior, {{path\\to\\SendEmail.ps1}} substitua pelo caminho para o arquivo que você criou na etapa 1.

1. Quando solicitado, insira o nome de usuário e senha do SMTP.

------