Enviando correos
Holamail es un listener SMTP ligero. Acepta los comandos básicos HELO/EHLO, MAIL FROM, RCPT TO, DATA y QUIT, y luego registra el mensaje. No entrega correo a destinatarios externos.
Detalles de conexión
| Parámetro | Host público de pruebas | Instancia local |
|---|---|---|
| Host | smtp.testmail.hola.cloud |
localhost |
| Puerto | 25 |
2525 |
| Cifrado | Ninguno | Ninguno |
| Autenticación | Ninguna | Ninguna |
Holamail no soporta STARTTLS ni SMTP AUTH.
Flujo SMTP
1HELO client.example.com
2MAIL FROM:<noreply@example.com>
3RCPT TO:<user@example.com>
4DATA
5Subject: Hola desde Holamail
6
7Este mensaje será registrado por Holamail.
8.
9QUIT
Ejemplos
Con curl
curl --url smtp://smtp.testmail.hola.cloud:25 \
--mail-from noreply@example.com \
--mail-rcpt user@example.com \
--upload-file email.txtGET / HTTP/1.1
Host: smtp.testmail.hola.cloud:25
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "smtp://smtp.testmail.hola.cloud:25", nil)
if err != nil {
panic(err)
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
responseBody, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(responseBody))
}
<?php
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'smtp://smtp.testmail.hola.cloud:25',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
]);
$response = curl_exec($ch);
if ($response === false) {
throw new Exception(curl_error($ch));
}
curl_close($ch);
echo $response;
import requests
response = requests.request(
"GET",
"smtp://smtp.testmail.hola.cloud:25"
)
print(response.text)
const response = await fetch("smtp://smtp.testmail.hola.cloud:25", {
method: "GET"
});
console.log(await response.text());
const response = await fetch("smtp://smtp.testmail.hola.cloud:25", {
method: "GET"
});
const text = await response.text();
console.log(text);
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
var request = HttpRequest.newBuilder()
.uri(URI.create("smtp://smtp.testmail.hola.cloud:25"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}Donde email.txt contiene:
1Subject: Hola desde Holamail
2
3Este mensaje será registrado por Holamail.
Sesión TCP simple
1telnet localhost 2525
Luego ingresa:
1HELO client.example.com
2MAIL FROM:<noreply@example.com>
3RCPT TO:<user@example.com>
4DATA
5Subject: Prueba local de Holamail
6
7Hola desde un listener local de Holamail.
8.
9QUIT
Comportamiento esperado
Holamail acepta entrada SMTP sintácticamente válida y registra el mensaje. Es útil para confirmar que una aplicación puede hablar SMTP sin enviar correo real.
No soporta entrega externa, APIs HTTP, STARTTLS, AUTH, rate limiting, plantillas, analíticas ni tracking.
Comentarios