

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Prueba de la conexión a la interfaz SMTP de Amazon SES mediante la línea de comandos
<a name="send-email-smtp-client-command-line"></a>

Puede utilizar los métodos descritos en esta sección desde la línea de comandos para probar la conexión con el punto de enlace SMTP de Amazon SES, validar las credenciales de SMTP y solucionar problemas de conexión. Estos procedimientos utilizan herramientas y bibliotecas que se incluyen con los sistemas operativos más comunes.

Para obtener información acerca de cómo solucionar problemas con las conexiones SMTP, consulte [Problemas de SMTP de Amazon SES](troubleshoot-smtp.md).

## Requisitos previos
<a name="send-email-smtp-client-command-line-prereqs"></a>

Cuando se conecta a la interfaz SMTP de Amazon SES, debe proporcionar un conjunto de credenciales de SMTP. Estas credenciales SMTP son diferentes de AWS las credenciales estándar. Los dos tipos de credenciales no son intercambiables. Para obtener más información sobre cómo obtener sus credenciales de SMTP, consulte [Obtención de las credenciales de SMTP de Amazon SES](smtp-credentials.md).

## Prueba de la conexión a la interfaz de SMTP de Amazon SES
<a name="send-email-smtp-client-command-line-testing"></a>

Puede utilizar la línea de comandos para probar su conexión a la interfaz de SMTP de Amazon SES sin autenticar ni enviar ningún mensaje. Este procedimiento es útil para solucionar problemas de conectividad básicos. Si la conexión de prueba produce un error, consulte [Problemas de SMTP](troubleshoot-smtp.md).

En esta sección se incluyen procedimientos para probar la conexión mediante OpenSSL (que se incluye en la mayoría de las distribuciones de Linux, macOS y Unix, y también está disponible para Windows) como `Test-NetConnection` el cmdlet PowerShell in (que se incluye en las versiones más recientes de Windows).

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

Hay dos formas de conectarse a la interfaz de SMTP de Amazon SES con OpenSSL: mediante SSL explícito a través del puerto 587 o mediante SSL implícito a través del puerto 465.

**Para conectarse a la interfaz SMTP mediante SSL explícito**
+ En la línea de comandos, ingrese el comando siguiente para conectarse al servidor SMTP de Amazon SES:

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

  En el comando anterior, *email-smtp.us-west-2.amazonaws.com* sustitúyalo por la URL del punto de conexión SMTP de Amazon SES de tu AWS región. Para obtener más información, consulte [Regiones y Amazon SES](regions.md).

  Si la conexión se realiza correctamente, aparece un resultado similar al siguiente:

  ```
  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
  ```

  La conexión se cierra automáticamente después de unos 10 segundos de inactividad.

Como alternativa, puede utilizar SSL implícito para conectarse a la interfaz SMTP a través del puerto 465.

**Para conectarse a la interfaz SMTP mediante SSL implícito**
+ En la línea de comandos, ingrese el comando siguiente para conectarse al servidor SMTP de Amazon SES:

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

  En el comando anterior, *email-smtp.us-west-2.amazonaws.com* sustitúyalo por la URL del punto de conexión SMTP de Amazon SES de tu AWS región. Para obtener más información, consulte [Regiones y Amazon SES](regions.md).

  Si la conexión se realiza correctamente, aparece un resultado similar al siguiente:

  ```
  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
  ```

  La conexión se cierra automáticamente después de unos 10 segundos de inactividad.

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

Puede usar el NetConnection cmdlet [Test-](https://docs.microsoft.com/en-us/powershell/module/nettcpip/test-netconnection) PowerShell para conectarse al servidor SMTP de Amazon SES.

**nota**  
El cmdlet `Test-NetConnection` puede determinar si la computadora puede conectarse al punto de enlace de SMTP de Amazon SES. Sin embargo, no comprueba si el equipo puede realizar una conexión SSL implícita o explícita al punto de enlace SMTP. Para probar una conexión SSL, puede instalar OpenSSL para Windows para enviar un correo electrónico de prueba.

**Para conectarse a la interfaz SMTP mediante el cmdlet `Test-NetConnection`**
+ En PowerShell, introduzca el siguiente comando para conectarse al servidor SMTP de Amazon SES:

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

  En el comando anterior, *email-smtp.us-west-2.amazonaws.com* sustitúyalo por la URL del punto de conexión SMTP de Amazon SES de tu AWS región y *587* sustitúyelo por el número de puerto. Para obtener más información acerca de los puntos de enlace regionales de Amazon SES, consulte [Regiones y Amazon SES](regions.md).

  Si la conexión se ha realizado correctamente, verá un resultado similar al siguiente ejemplo:

  ```
  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 de la línea de comandos para enviar correo electrónico con la interfaz de SMTP de Amazon SES
<a name="send-email-using-openssl"></a>

También puede utilizar la línea de comandos para enviar mensajes mediante la interfaz de SMTP de Amazon SES. Este procedimiento es útil para probar las credenciales de SMTP y la capacidad de destinatarios específicos para recibir mensajes que envíe mediante Amazon SES.

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

Cuando un remitente de correo electrónico se conecta a un servidor SMTP, el cliente emite un conjunto estándar de solicitudes y el servidor responde a cada solicitud con una respuesta estándar. Esta serie de solicitudes y respuestas se denomina *conversación de SMTP*. Cuando se conecte al servidor SMTP de Amazon SES con OpenSSL, el servidor esperará que se produzca una conversación de SMTP.

Si tiene previsto utilizar OpenSSL para conectarse a la interfaz SMTP, tendrá que codificar sus credenciales de SMTP en base64. Esta sección incluye procedimientos para codificar sus credenciales en base64.

**Para enviar un correo electrónico desde la línea de comandos utilizando la interfaz de SMTP**

1. Introduzca lo siguiente en la línea de comandos y *email-smtp.us-west-2.amazonaws.com* sustitúyalo por la URL del punto de conexión SMTP de Amazon SES correspondiente a su Región de AWS. Para obtener más información, consulte[Regiones y 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. En la petición de cada variable, escriba sus propios valores.

1. 
   + Para realizar el envío mediante SSL implícito a través del puerto 465, use:

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

   Si Amazon SES aceptó el mensaje, verá un resultado similar al siguiente ejemplo:

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

   La cadena de números y texto que sigue a `250 Ok` es el ID de mensaje del correo electrónico.
**nota**  
La conexión se cierra automáticamente después de unos 10 segundos de inactividad.

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

Puede utilizar el [Net.Mail. SmtpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.8)clase para enviar correos electrónicos mediante SSL explícito a través del puerto 587.

**nota**  
La clase `Net.Mail.SmtpClient` está oficialmente obsoleta y Microsoft recomienda que utilice bibliotecas de terceros. Este código se ha diseñado únicamente para fines de prueba y no debe usarse para cargas de trabajo de producción.

**Para enviar un correo electrónico PowerShell mediante SSL explícito**

1. En un editor de texto, cree un nuevo archivo. Pegue el código siguiente en el archivo:

   ```
   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
   ```

   Cuando haya terminado, guarde el archivo como `SendEmail.ps1`.

1. Realice los cambios siguientes en el archivo que creó en el paso anterior:
   + *sender@example.com*Sustitúyala por la dirección de correo electrónico desde la que deseas enviar el mensaje.
   + *recipient@example.com*Sustitúyala por la dirección de correo electrónico a la que deseas enviar el mensaje.
   + *email-smtp.us-west-2.amazonaws.com*Sustitúyala por la URL del punto de conexión SMTP de Amazon SES de tu AWS región. Para obtener más información, consulte [Regiones y Amazon SES](regions.md).

1. En PowerShell, introduzca el siguiente comando:

   ```
   .\path\to\SendEmail.ps1
   ```

   En el comando anterior, *path\$1to\$1SendEmail.ps1* sustituya por la ruta del archivo que creó en el paso 1.

1. Cuando se le solicite, escriba su nombre de usuario y contraseña de SMTP.

Como alternativa, puede utilizar el [System.Web.Mail. SmtpMail](https://docs.microsoft.com/en-us/dotnet/api/system.web.mail.smtpmail?view=netframework-4.8)clase para enviar correos electrónicos mediante SSL implícito a través del puerto 465.

**nota**  
La clase `System.Web.Mail.SmtpMail` está oficialmente obsoleta y Microsoft recomienda que utilice bibliotecas de terceros. Este código se ha diseñado únicamente para fines de prueba y no debe usarse para cargas de trabajo de producción.

**Para enviar un correo electrónico PowerShell mediante SSL implícito**

1. En un editor de texto, cree un nuevo archivo. Pegue el código siguiente en el archivo:

   ```
   [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
   ```

   Cuando haya terminado, guarde el archivo como `SendEmail.ps1`.

1. Realice los cambios siguientes en el archivo que creó en el paso anterior:
   + *sender@example.com*Sustitúyala por la dirección de correo electrónico desde la que deseas enviar el mensaje.
   + *recipient@example.com*Sustitúyala por la dirección de correo electrónico a la que deseas enviar el mensaje.
   + *email-smtp.us-west-2.amazonaws.com*Sustitúyala por la URL del punto de conexión SMTP de Amazon SES de tu AWS región. Para obtener más información, consulte [Regiones y Amazon SES](regions.md).

1. En PowerShell, introduzca el siguiente comando:

   ```
   .\path\to\SendEmail.ps1
   ```

   En el comando anterior, *path\$1to\$1SendEmail.ps1* sustituya por la ruta del archivo que creó en el paso 1.

1. Cuando se le solicite, escriba su nombre de usuario y contraseña de SMTP.

------