SMTP para TYPO3 — correos de su web que llegan
TYPO3 envía su correo por el transporte fijado en los ajustes de la instalación. Por defecto es la función de correo local del servidor, sin autenticación y sin reputación, con lo que los envíos de formularios y los correos de recuperación acaban a menudo en spam en Gmail y Outlook.
TYPO3 puede poner ese transporte directamente en SMTP, sin ninguna extensión adicional. Indica el servidor, el puerto, el cifrado y el acceso en los ajustes MAIL de la instalación, y a partir de ahí todo lo que envía TYPO3 —incluidos los correos de formulario y de flujo de trabajo de las extensiones— pasa por su relay.
Por qué falla sin relay
TYPO3 se usa en sitios grandes y multilingües de empresas y administraciones, a menudo con formularios que ponen en marcha una solicitud real: una inscripción, una petición de presupuesto, una candidatura. Si la confirmación no llega, el solicitante llama, o vuelve a rellenar el formulario y usted acaba con expedientes duplicados. El correo sí sale, pero nada demuestra que venga de su dominio.
Configurar el SMTP en TYPO3
Obtener los datos
Acceda a su cuenta de 2mail y obtenga allí su servidor SMTP, su nombre de usuario y su contraseña.
Introducirlos en TYPO3
La configuración de correo de TYPO3 está en los ajustes de la instalación, bajo las claves MAIL. Ponga el transporte en SMTP, indique el servidor con su puerto, elija el cifrado e introduzca el usuario y la contraseña. Ponga también la dirección y el nombre de remitente por defecto en su propio dominio. La herramienta de instalación tiene un correo de prueba: envíelo a una dirección externa de un gran proveedor.
Autenticar el dominio
Asegúrese de que SPF, DKIM y DMARC de su dominio son correctos, para que los destinatarios puedan verificar que el correo viene de usted.
Probar
Envíe desde su plataforma un mensaje de prueba a una dirección de un gran proveedor y compruebe que llega a la bandeja de entrada y no a la carpeta de spam.
Los campos que pide TYPO3
Cada plataforma los llama de una manera algo distinta, pero siempre son los mismos cinco. Los valores concretos dependen de su cuenta y los encuentra en su cuenta de 2mail: cópielos de ahí para asegurarse de usar los correctos.
| Campo | Qué introducir |
|---|---|
| Servidor SMTP (host) | El nombre del servidor de su cuenta de 2mail. |
| Puerto | El puerto que corresponde al cifrado elegido; su cuenta le indica cuál. |
| Cifrado | TLS. No envíe nunca sin cifrar: de lo contrario sus credenciales viajan en claro. |
| Nombre de usuario | El acceso SMTP de su cuenta de 2mail. |
| Contraseña | La contraseña correspondiente. No use nunca la contraseña del buzón de un empleado. |
Configuración SMTP para TYPO3 en código
Ejemplos que funcionan para el puerto 587 con STARTTLS, listos para copiar. Sustituya la dirección de remitente por una dirección de su propio dominio y compruebe el nombre del servidor y el acceso en su cuenta de 2mail. La contraseña va en una variable de entorno: nunca en el código y nunca en el control de versiones.
Los ajustes MAIL en additional.php
Ponga los datos SMTP en el archivo de configuración adicional y no en settings.php: este último lo reescribe la herramienta de instalación, y una llamada a getenv() no sobrevive a eso. Así el acceso y la contraseña salen de variables de entorno del servidor y quedan fuera del control de versiones. Atención a transport_smtp_encrypt: en las versiones actuales de TYPO3 es un booleano que en el puerto 587 debe ser false; STARTTLS se aplica entonces automáticamente. Solo las versiones muy antiguas (hasta la 9 inclusive) esperaban aquí el texto tls.
<?php
// config/system/additional.php
// (older installations: typo3conf/AdditionalConfiguration.php)
$GLOBALS['TYPO3_CONF_VARS']['MAIL'] = array_replace(
$GLOBALS['TYPO3_CONF_VARS']['MAIL'],
[
'transport' => 'smtp',
'transport_smtp_server' => 'relay.2mail.eu:587', // host AND port, in one value
'transport_smtp_encrypt' => false, // false on 587 = STARTTLS; true = TLS from the first byte (465)
'transport_smtp_username' => getenv('SMTP_USERNAME'),
'transport_smtp_password' => getenv('SMTP_PASSWORD'),
'defaultMailFromAddress' => 'noreply@example.com',
'defaultMailFromName' => 'Example',
]
); Correo de prueba: herramienta de instalación o MailMessage
La comprobación más rápida está en el backend: Admin Tools → Environment → Test Mail Setup envía un mensaje con exactamente los ajustes que rigen en realidad. Si quiere probar desde su propia extensión, basta con la clase MailMessage de TYPO3: el mismo camino que siguen los formularios y los correos de flujo de trabajo.
use TYPO3\CMS\Core\Mail\MailMessage;
use TYPO3\CMS\Core\Utility\GeneralUtility;
// No from(): TYPO3 falls back to defaultMailFromAddress / defaultMailFromName.
$mail = GeneralUtility::makeInstance(MailMessage::class);
$mail
->to('you@example.org')
->subject('SMTP test')
->text('Sent through the 2mail SMTP relay.')
->send(); Qué correos envía TYPO3
Una vez configurado el relay, todos estos pasan por 2mail: no tiene que configurarlos uno a uno.
Errores frecuentes con TYPO3
Ajustes en la capa equivocada
TYPO3 lee los ajustes de instalación de varias capas: el archivo de configuración del sistema y un archivo adicional que lo sobrescribe. Si pone los datos SMTP en una capa mientras la otra sigue con el transporte antiguo, gana esta última. Compruebe en la herramienta de instalación qué valor rige realmente.
El servidor y el puerto van juntos
TYPO3 espera el servidor y el puerto juntos en el ajuste del transporte. Si olvida el puerto, TYPO3 recurre a un valor por defecto que no encaja con su cifrado, y entonces la conexión se cuelga o se corta de inmediato. El puerto 587 con STARTTLS es la opción segura.
Staging con los mismos datos
Si la configuración se despliega por control de versiones, un entorno de pruebas o de staging enviará con el mismo acceso, a direcciones reales de una base de datos copiada. Use un acceso distinto por entorno, para poder cerrar el de pruebas por separado.
Mensajes de error habituales con TYPO3
Los mensajes que recibe cuando el host, el puerto, el cifrado o el acceso no son correctos: citados literalmente, para que los reconozca en su registro, con la causa y la solución al lado.
| Mensaje | Causa | Solución |
|---|---|---|
Connection could not be established with host "relay.2mail.eu:25": stream_socket_client(): Unable to connect to relay.2mail.eu:25 (Connection timed out) | En transport_smtp_server solo figura el nombre del servidor, sin puerto. TYPO3 recurre entonces al puerto 25, que la mayoría de los proveedores de alojamiento y plataformas en la nube bloquean para el tráfico saliente. | Escriba el servidor y el puerto juntos en un solo valor: relay.2mail.eu:587. |
Connection could not be established with host "ssl://relay.2mail.eu:587": stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:…:SSL routines::wrong version number | transport_smtp_encrypt está en true. TYPO3 espera entonces TLS desde el primer byte, mientras que el puerto 587 empieza sin cifrar y solo después se eleva a TLS por STARTTLS. | Ponga transport_smtp_encrypt en false y deje el puerto en 587. La conexión sigue estando cifrada. |
Failed to authenticate on SMTP server with username "…" using the following authenticators: "LOGIN", "PLAIN". … Expected response code "235" but got code "535" | El relay rechaza el acceso. O bien el usuario o la contraseña no son correctos, o bien la variable de entorno está vacía en el contexto en el que se ejecuta PHP: el servidor web no ve automáticamente las mismas variables que su shell. | Compruebe que getenv('SMTP_PASSWORD') devuelve un valor dentro del servidor web, y use el acceso SMTP de su cuenta de 2mail, no la contraseña de un buzón. |
Expected response code "250/251/252" but got code "554", with message "554 5.7.1 <noreply@example.com>: Sender address rejected" | El acceso es correcto, pero la dirección de remitente pertenece a un dominio que no está vinculado a su cuenta de 2mail. A menudo defaultMailFromAddress está vacío, o un formulario fija su propio remitente. | Ponga en defaultMailFromAddress una dirección de un dominio que haya añadido en 2mail, y revise en cada formulario qué dirección de remitente usa. |
¿Otra plataforma?
SMTP es un protocolo estándar: cualquier sistema que hable SMTP —un CRM, un ERP, una aplicación propia o un servidor— puede enviar a través de 2mail con esos mismos cinco campos.