# Enviar tu primer email por SMTP

> Obtén tus credenciales SMTP, elige un puerto y envía un email de prueba a través de smtp.emailit.com con swaks, OpenSSL o Python, y después conecta tu aplicación o tu framework.

Este inicio rápido te muestra cómo enviar un email de prueba a través del SMTP relay de Emailit desde tu terminal y cómo conectar después tu propia aplicación. Usa SMTP cuando tu software ya tenga ajustes SMTP. Para código nuevo, la [API](/es/docs/quickstart/api/) ofrece más posibilidades.

## Antes de empezar

- Un dominio de envío verificado. Si aún no tienes uno, sigue la primera sección del [inicio rápido de la API](/es/docs/quickstart/api/#add-and-verify-your-domain) o [Añadir un dominio](/es/docs/domains/add-a-domain/).
- Una clave de API. Crea una en **Email API → API Keys** con **Add API key**. Tu clave de API es tu contraseña SMTP.

## Tus credenciales SMTP

| Ajuste | Valor |
| --- | --- |
| Host | `smtp.emailit.com` |
| Puerto | `587` con STARTTLS (recomendado). Consulta las alternativas en la tabla siguiente. |
| Usuario | `emailit` |
| Contraseña | Tu clave de API, que empieza por `secret_` |
| Autenticación | `PLAIN` o `LOGIN` |
| Dirección del remitente | Cualquier dirección de un dominio de envío verificado, por ejemplo `Acme <hello@acme.com>` |

También puedes ver estos ajustes en la tarjeta **SMTP Info** al abrir una clave en **Email API → API Keys**.

| Puerto | Cifrado | Cuándo usarlo |
| --- | --- | --- |
| `587` | STARTTLS | El valor por defecto de la mayoría de las aplicaciones y bibliotecas |
| `465` | TLS desde el primer byte (TLS implícito) | Cuando tu cliente lo llama «SSL» o «SMTPS» |
| `2525` | STARTTLS | Cuando tu red o tu proveedor de hosting bloquean el 587 |
| `2587` | STARTTLS | Otra alternativa cuando el 587 y el 2525 están bloqueados |
| `25` | STARTTLS | Retransmisión entre servidores. Muchos proveedores de nube bloquean el puerto 25 saliente. |

El relay ofrece TLS en todos los puertos, pero no lo impone. Activa siempre TLS en tu cliente para que tu clave de API no se envíe en texto plano.

## Enviar un email de prueba

Elige una de estas herramientas. Sustituye `hello@acme.com` por una dirección de tu dominio verificado y `ada@example.com` por la dirección de email con la que te registraste.

> **Modo sandbox:** Hasta que tu espacio de trabajo tenga acceso de producción, solo puedes enviar a las direcciones de email de las cuentas de los miembros del espacio de trabajo. Los demás destinatarios se rechazan con `550 Unverified workspaces can only send to workspace members' account emails`. Consulta [Acceso de producción](/es/docs/workspaces/production-access/).

### swaks

[swaks](https://github.com/jetmore/swaks) es una herramienta de línea de comandos para probar SMTP. Instálala con `brew install swaks` o `apt install swaks` y después ejecuta:

```bash
swaks --server smtp.emailit.com:587 --tls \
  --auth-user emailit --auth-password "$EMAILIT_API_KEY" \
  --from hello@acme.com --to ada@example.com \
  --header "Subject: Hello from Emailit SMTP" \
  --body "This is my first email sent through the Emailit SMTP relay."
```

swaks muestra toda la conversación SMTP. La última respuesta del servidor contiene el ID del email:

```text
<~  250 2.0.0 OK: queued as em_2pX7cN4kQ9vLm3RtB8yWd1Zs
```

### OpenSSL

OpenSSL viene preinstalado en la mayoría de los sistemas y te permite escribir tú mismo los comandos SMTP. Primero, codifica tus credenciales para `AUTH PLAIN`:

```bash
printf '\0emailit\0%s' "$EMAILIT_API_KEY" | base64
```

Después, abre una conexión y escribe los comandos siguientes, pegando la cadena codificada después de `AUTH PLAIN`:

```bash
openssl s_client -connect smtp.emailit.com:587 -starttls smtp -crlf -quiet
```

```text
EHLO localhost
AUTH PLAIN AGVtYWlsaXQAc2VjcmV0X...
MAIL FROM:<hello@acme.com>
RCPT TO:<ada@example.com>
DATA
From: Acme <hello@acme.com>
To: ada@example.com
Subject: Hello from Emailit SMTP

This is my first email sent through the Emailit SMTP relay.
.
QUIT
```

Después de `AUTH PLAIN`, el servidor responde `235`. Después de la línea con un solo `.`, responde `250 2.0.0 OK: queued as em_…`.

### Python

El `smtplib` integrado de Python no necesita paquetes adicionales:

```python title="send_smtp.py"
from email.message import EmailMessage

msg = EmailMessage()
msg["From"] = "Acme <hello@acme.com>"
msg["To"] = "ada@example.com"
msg["Subject"] = "Hello from Emailit SMTP"
msg.set_content("This is my first email sent through the Emailit SMTP relay.")
msg.add_alternative("<p>This is my first email sent through the Emailit SMTP relay.</p>", subtype="html")

with smtplib.SMTP("smtp.emailit.com", 587) as smtp:
    smtp.starttls()
    smtp.login("emailit", os.environ["EMAILIT_API_KEY"])
    smtp.send_message(msg)

print("Accepted by Emailit")
```

Si el script termina sin ninguna excepción, Emailit ha aceptado el email.

## Comprobarlo en el panel

Ve a **Email API → Emails**. Tu email aparece arriba del todo en la pestaña **Outgoing**, y su estado cambia de **accepted** a **delivered** cuando el servidor del destinatario lo acepta. Cada sesión SMTP aparece también en **Email API → Logs** con el origen **SMTP**, así que también puedes ver los inicios de sesión fallidos y los mensajes rechazados.

## Respuestas habituales

| Respuesta | Causa | Solución |
| --- | --- | --- |
| `535 Authentication failed` | Clave de API incorrecta o eliminada | Usa una clave de API vigente como contraseña. Consulta [Errores 535](/es/docs/kb/smtp-535-authentication-failed/). |
| `530 From/Sender domain is not verified for this workspace` | La dirección del remitente no pertenece a un dominio verificado | Verifica el dominio o cambia la dirección del remitente. Consulta [Errores 530](/es/docs/kb/smtp-530-from-domain-not-verified/). |
| `550 Unverified workspaces can only send to workspace members' account emails` | Modo sandbox | Envía a la dirección de email de la cuenta de un miembro o solicita acceso de producción |
| `452 4.4.5 Messages per second limit exceeded` | Has superado tu límite por segundo | Reduce el ritmo y vuelve a intentarlo. Los límites se comparten con la API. |
| `452 4.5.3 Daily message limit exceeded` | Has alcanzado el límite de hoy | Espera hasta la medianoche UTC o [solicita un aumento](/es/docs/limits/) |
| Tiempo de espera de conexión agotado | Tu red bloquea el puerto | Prueba con `2525` o `2587`. Consulta [Tiempos de espera de conexión](/es/docs/kb/smtp-connection-timeout-port-25/). |

Para ver todos los códigos de respuesta, consulta [Solución de problemas de SMTP](/es/docs/smtp/troubleshooting/).

## Conectar tu aplicación

Introduce los mismos ajustes en tu aplicación o tu framework. Estas guías muestran la configuración exacta:

  - [Laravel](/es/docs/frameworks/laravel/)
  - [PHP](/es/docs/frameworks/php/)
  - [WordPress](/es/docs/frameworks/wordpress/)
  - [Node.js](/es/docs/frameworks/nodejs/)
  - [Next.js](/es/docs/frameworks/nextjs/)
  - [Nuxt](/es/docs/frameworks/nuxt/)
  - [Python](/es/docs/frameworks/python/)
  - [Rails](/es/docs/frameworks/rails/)
  - [Go](/es/docs/frameworks/go/)
  - [Java](/es/docs/frameworks/java/)
  - [.NET](/es/docs/frameworks/dotnet/)

## Próximos pasos

  - [Configuración SMTP](/es/docs/smtp/settings/): Puertos, TLS, tamaño de los mensajes y cómo trata Emailit tus cabeceras.
  - [Cabeceras SMTP](/es/docs/smtp/headers/): Qué cabeceras añade, cambia o elimina Emailit.
  - [Configurar webhooks](/es/docs/webhooks/set-up/): Recibe también los eventos de entrega y de rebote de los emails enviados por SMTP.
  - [API o SMTP](/es/docs/get-started/api-or-smtp/): Lo que la API puede hacer y SMTP no.

---
Fuente: https://emailit.com/es/docs/quickstart/smtp/
