Esta publicaciónanaliza una solución de VBA para reemplazar texto en un correo electrónico entrante con reglas de Outlook.
Utilicé el mismo enfoque para eliminar el texto "Mensaje externo" de la parte superior de los correos electrónicos que recibo (en realidad son 2 líneas de texto que el empleador inserta, lo cual es realmente molesto). Sin embargo, cuando VBA realiza el reemplazo, el correo electrónico resultante también cambia el formato del correo electrónico. El texto se reemplaza según lo previsto (¡excelente!), pero todos los hipervínculos del correo electrónico se expanden y todos los demás formatos HTML se pierden (lo cual no es bueno). Parece que se ha convertido a texto sin formato. ¿Existe alguna manera de reemplazar el texto de los mensajes entrantes en Outlook sin perder el formato HTML?
Aquí está el código que estoy ejecutando:
Sub RemoveExternalText(MyMail As MailItem)
Dim body As String, re As Object, match As Variant
body = MyMail.body
Set re = CreateObject("vbscript.regexp")
re.Pattern = "External Message"
For Each match In re.Execute(body)
body = Replace(body, match.Value, "")
Next
MyMail.body = body
MyMail.Save
End Sub
Respuesta1
Mientras leo sobre la creación de correo electrónico HTML con VBA, veo que no usan "MyMail.body", sino "MyMail.HTMLbody".
¡Cambiar el código con esa sintaxis resolvió el problema!
Sub RemoveExternalText(MyMail As MailItem)
Dim body As String, re As Object, match As Variant
body = MyMail.HTMLBody
Set re = CreateObject("vbscript.regexp")
re.Pattern = "External Message"
For Each match In re.Execute(body)
body = Replace(body, match.Value, "")
Next
MyMail.HTMLBody = body
MyMail.Save
End Sub