Cuando responde a un correo electrónico en Outlook, el formato del mensaje suele coincidir con el correo original. Pero si se comunica regularmente con un dominio específico que requiere respuestas en texto sin formato, es posible que desee automatizar esta configuración. Outlook no ofrece una regla integrada de formato de respuesta por dominio. Sin embargo, puede lograrlo combinando una regla personalizada de Outlook con un script de Visual Basic for Applications. Este artículo explica cómo crear una regla que detecte respuestas a un dominio específico y fuerce la respuesta al formato de texto sin formato.
La solución principal utiliza una regla de Outlook que activa un script de VBA. El script verifica el dominio del destinatario de la respuesta y cambia el formato del correo electrónico a texto sin formato antes de enviarlo. Deberá habilitar las macros en Outlook y confiar en el proyecto de VBA. Esta guía explica cada paso para configurar la regla y el script.
Al final de este artículo, tendrá una regla funcional que convierte automáticamente las respuestas a texto sin formato para cualquier dominio de destinatario que especifique. Puede modificar la lista de dominios en el script para agregar o quitar dominios según sea necesario. Este método funciona en Outlook 2016, Outlook 2019, Outlook para Microsoft 365 y Outlook 2021 en Windows 10 y Windows 11.
Puntos clave: Forzar respuesta en texto sin formato por dominio
- Regla de Outlook + script de VBA: La única forma de forzar el formato de respuesta en texto sin formato según el dominio del destinatario sin complementos de terceros.
- Alt+F11: Abre el editor de VBA donde se pega el script que verifica el dominio y establece MailItem.BodyFormat en olFormatPlain.
- Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros: Habilite todas las macros y confíe en el acceso al modelo de objetos del proyecto de VBA.
- Regla con la acción “ejecutar un script”: Activa el script de VBA en cada respuesta saliente que envíe al dominio especificado.
Cómo funcionan juntas la regla de Outlook y el script de VBA
Las reglas de Outlook pueden realizar acciones automáticamente cuando se envían o reciben mensajes. Una acción disponible es ejecutar un script de VBA. Cuando se crea una regla que se activa en respuestas salientes, se puede adjuntar un script que inspecciona el dominio del destinatario y cambia el formato del mensaje a texto sin formato. El script se ejecuta antes de que el correo electrónico salga de la Bandeja de salida, por lo que el destinatario recibe un mensaje de texto sin formato incluso si el correo original era HTML o texto enriquecido.
El script de VBA utiliza el evento Application_ItemSend o un Sub activado por regla para interceptar el elemento saliente. En esta guía, usamos un script activado por regla porque permite especificar exactamente qué dominio activa el cambio de formato. El script verifica el dominio de la dirección de correo electrónico del destinatario y establece la propiedad BodyFormat en olFormatPlain (valor 1). También convierte el cuerpo HTML a texto sin formato eliminando las etiquetas, lo que garantiza que no queden artefactos de formato.
Requisitos previos: Necesita derechos administrativos en su cuenta de usuario de Windows para habilitar macros en Outlook. El proyecto de VBA se almacena en su perfil de Outlook, por lo que la regla y el script se aplican solo a su cliente de Outlook local. Este método no funciona en Outlook en la web ni en dispositivos móviles.
Pasos para crear la regla de respuesta en texto sin formato para un dominio específico
Siga estos pasos para crear una regla y un script de VBA que fuercen respuestas en texto sin formato para un dominio específico. Reemplace example.com con su dominio de destino en el script.
Paso 1: Habilitar macros en Outlook
- Abrir el Centro de confianza
Vaya a Archivo > Opciones > Centro de confianza. Haga clic en Configuración del Centro de confianza. - Cambiar la configuración de macros
Seleccione Configuración de macros. Elija “Habilitar todas las macros (no se recomienda; se puede ejecutar código potencialmente peligroso)”. Marque la casilla “Confiar en el acceso al modelo de objetos del proyecto de VBA”. Haga clic en Aceptar dos veces.
Paso 2: Abrir el editor de VBA e insertar el script
- Abrir el editor de VBA
Presione Alt+F11 en Outlook. Si el Explorador de proyectos no está visible, presione Ctrl+R para mostrarlo. - Insertar un nuevo módulo
En el Explorador de proyectos, expanda Project1 (VbaProject.OTM). Haga clic con el botón derecho en Módulos, elija Insertar > Módulo. Se abre un módulo en blanco. - Pegar el script
Copie y pegue el siguiente código de VBA en el módulo. Reemplaceexample.comcon su dominio de destino. Para agregar varios dominios, useOr InStr(recipient, "@domain2.com") > 0.Sub ForcePlainTextReply(Item As Outlook.MailItem) Dim recipient As String Dim i As Integer ' Check if the item is a reply If Item.ReplyRecipients.Count = 0 Then Exit Sub ' Loop through reply recipients For i = 1 To Item.ReplyRecipients.Count recipient = LCase(Item.ReplyRecipients.Item(i).Address) ' Check if recipient domain matches target If InStr(recipient, "@example.com") > 0 Then ' Set format to plain text Item.BodyFormat = olFormatPlain ' Convert HTML body to plain text Item.Body = Item.Body Exit For End If Next i End Sub - Guardar y cerrar
Presione Ctrl+S para guardar. Cierre el editor de VBA.
Paso 3: Crear la regla de Outlook
- Abrir el Asistente para reglas
Vaya a Archivo > Administrar reglas y alertas. Haga clic en Nueva regla. - Seleccionar plantilla
En “Empezar desde una regla en blanco”, seleccione “Aplicar regla a los mensajes que yo envíe”. Haga clic en Siguiente. - Establecer condiciones
Marque “enviados solo a mí”. Esto garantiza que la regla se active solo en respuestas o reenvíos donde usted esté en el campo Para. Haga clic en Siguiente. Haga clic en Sí cuando se le pregunte sobre excepciones. - Seleccionar acción
Marque “ejecutar un script”. En el panel inferior, haga clic en el subrayado “un script”. Seleccione “ForcePlainTextReply” de la lista. Haga clic en Aceptar. Haga clic en Siguiente. - Establecer excepciones
Deje las excepciones vacías. Haga clic en Siguiente. - Nombrar y finalizar
Escriba un nombre como “Forzar respuesta en texto sin formato a example.com”. Marque “Activar esta regla”. Haga clic en Finalizar. Haga clic en Aceptar.
Si la regla no se aplica o el script falla
La combinación de regla y script es confiable, pero varios problemas pueden impedir que funcione. Estos son los problemas más comunes y cómo solucionarlos.
El script no se ejecuta cuando respondo a correos electrónicos del dominio de destino
La condición de regla “enviados solo a mí” puede ser demasiado restrictiva. Si responde a un correo electrónico donde el remitente original no está en su libreta de direcciones o el destinatario de la respuesta no está en el campo Para, es posible que la regla no se active. Cambie la condición a “enviados a personas o listas de distribución” y seleccione su propia dirección de correo electrónico. Como alternativa, elimine las condiciones por completo para que la regla se aplique a todos los mensajes salientes y deje que el script filtre por dominio.
La seguridad de macros bloquea el script
Si ve una advertencia de seguridad sobre macros, el script no se ejecutará. Vaya a Archivo > Opciones > Centro de confianza > Configuración del Centro de confianza > Configuración de macros. Asegúrese de que “Habilitar todas las macros” esté seleccionado y que “Confiar en el acceso al modelo de objetos del proyecto de VBA” esté marcado. Además, agregue su proyecto de VBA como ubicación de confianza: en el Centro de confianza, seleccione Ubicaciones de confianza, agregue una ubicación que apunte a su archivo de proyecto de VBA de Outlook (generalmente en %appdata%\Microsoft\Outlook).
El correo electrónico aún se envía en formato HTML o texto enriquecido
Es posible que el script no se ejecute porque la acción de regla “ejecutar un script” requiere que el script esté en un módulo, no en el panel de código ThisOutlookSession. Confirme que el script esté en un módulo estándar (carpeta Módulos). Además, el script usa Item.ReplyRecipients que puede estar vacío para nuevas respuestas compuestas desde la Bandeja de entrada. En ese caso, modifique el script para verificar Item.To en lugar de los destinatarios de la respuesta. Reemplace el bucle con:
If InStr(LCase(Item.To), "@example.com") > 0 Then
Item.BodyFormat = olFormatPlain
Item.Body = Item.Body
End If
Script activado por regla vs. evento ItemSend: diferencias clave
El método descrito en este artículo utiliza un script activado por regla. Otro enfoque utiliza el evento Application_ItemSend que se desencadena en cada mensaje saliente. La siguiente tabla compara los dos enfoques.
| Elemento | Script activado por regla | Evento Application_ItemSend |
|---|---|---|
| Mecanismo de activación | Regla de Outlook con acción “ejecutar un script” | Controlador de eventos en ThisOutlookSession |
| Filtrado por dominio | El script verifica los destinatarios y aplica el formato | El script verifica los destinatarios y aplica el formato |
| Complejidad de configuración | Requiere crear una regla y un script de módulo | Requiere solo código en ThisOutlookSession |
| Alcance | Se aplica solo a los mensajes que cumplen las condiciones de la regla | Se aplica a todos los mensajes salientes |
| Impacto en el rendimiento | Bajo; solo se ejecuta cuando se cumplen las condiciones de la regla | Se ejecuta en cada envío; ligera demora |
| Ideal para | Dominios específicos o casos de uso limitados | Aplicación global del formato |
El script activado por regla es mejor para dirigirse a un dominio específico porque se ejecuta solo cuando coinciden las condiciones de la regla. El evento ItemSend se ejecuta en cada mensaje saliente, lo que puede ralentizar el envío si tiene muchos correos electrónicos. Para el caso de uso de forzar texto sin formato para un dominio, el script activado por regla es el enfoque recomendado.
Después de configurar la regla y el script, pruebe enviando una respuesta a un correo electrónico del dominio de destino. Redacte una respuesta en formato HTML y luego envíela. El destinatario debe recibir un mensaje de texto sin formato. Para verificarlo, envíese un correo electrónico de prueba a sí mismo usando una cuenta del dominio de destino y compruebe el formato del mensaje en su Bandeja de entrada.
Puede ampliar el script para admitir varios dominios agregando más condiciones Or InStr. Por ejemplo: If InStr(recipient, "@example.com") > 0 Or InStr(recipient, "@test.org") > 0 Then. También puede modificar el script para forzar texto sin formato en mensajes nuevos, no solo en respuestas, eliminando la verificación del destinatario de la respuesta y verificando siempre el campo Para.