El software del hotel abre la ventana de correo electrónico en Outlook con texto generado: ¿cómo cambiarlo automáticamente a html o activar un script vba?


0

Mi situación: el software de administración de un hotel genera un texto y abre una ventana de "Nuevo correo electrónico" en Outlook con ese texto preestablecido. Sin embargo, necesito que el correo electrónico esté en formato HTML, aplique algún formato y agregue la firma correcta.

El formato de correo electrónico es texto plano. ¿Cuál es una forma posible de que el correo electrónico cambie automáticamente al formato html? No tengo opción para configurar esto en el software del hotel.

¿Cuál podría ser una opción viable? ¿Activar automáticamente un script VBA, que cambia esto?


¿Cuál es el formato de correo predeterminado establecido en su Outlook? Por defecto, debe ser HTML. Si está configurado en HTML, sin embargo, el correo electrónico aún está abierto en formato de texto sin formato, puede intentar ponerse en contacto con el desarrollador del software de administración para ver si tiene algún control sobre esto.
Steve Fan

sí, esta es la cosa ... la configuración predeterminada de Outlook está establecida en HTML, sin embargo, el hotel sw abre un nuevo correo electrónico en formato de texto plano ... no puedo cambiar esto ... hable con los desarrolladores en primer lugar ... Sin embargo, se mantendrá por ahora. Así que necesito una solución.
haemse

Respuestas:


1

No sé VBA, pero en PowerShell el script se vería así (note que está usando clases VBA):

#Create Outlook Application object
$ol = New-Object -comObject Outlook.Application

# Create the new email
$mail = $ol.CreateItem(0) # 0 is the value of OlItemType.olMailItem

# Set the subject
$mail.Subject = "Formatting test"

# Set body format to HTML
$mail.BodyFormat = 2 # 2 is the value of OlBodyFormat.olFormatHTML

# Set the body
$mail.HTMLBody = "<html><body><p>Test</p></body></html>"

# Bring the message window to the front
$mail.Display()

Espero que esto ayude.

Editar: habilité las herramientas de desarrollador en mi Outlook y usando ejemplos de documentación Convertí mi código de PowerShell a subrutina VBA:

Sub MakeMessage()
    Dim OutlookMessage As Outlook.MailItem
    Set OutlookMessage = Application.CreateItem(olMailItem)
    OutlookMessage.Subject = "Hello World!"
    OutlookMessage.BodyFormat = olFormatHTML
    OutlookMessage.HTMLBody = "<html><body><p>Test</p></body></html>"
    OutlookMessage.Display
End Sub

aunque todavía no sé cómo ejecutar esto como un script.

Edición: Ok, así es como se usa Eventos para editar el correo electrónico al abrir:

Dim WithEvents m_objMail As Outlook.mailItem

Private Sub Application_ItemLoad(ByVal Item As Object)
    Select Case Item.Class
        Case olMail
            Set m_objMail = Item
    End Select
End Sub

Private Sub m_objMail_Open(Cancel As Boolean)
    If m_objMail.Subject = "Hello World!" Then
        m_objMail.BodyFormat = olFormatPlain
        m_objMail.HTMLBody = "<html><body><p>Body: " + m_objMail.body + " </p></body></html>"
    End If
End Sub

Es necesario recordar cambiar si la condición en la subrutina m_objMail_Open para lo que corresponda al correo electrónico generado por el software de su hotel y al HTMLBody generado para que se ajuste a la salida deseada.

Además, tenga en cuenta que el evento MailItem.Open se genera cada vez que se abre un correo electrónico en una nueva ventana, por lo que debe verificar si está tratando con un nuevo correo electrónico en lugar de uno existente (así que supongo Not m_objMail.Sent And Not m_objMail.Saved para eliminar correos electrónicos enviados y recibidos, pero necesita experimentar con eso).


Hey, muchas gracias! sin embargo, mi problema es que el software del hotel ya está iniciando un correo electrónico de Outlook (la subventana de Outlook se abre con un mensaje de correo electrónico). Me gustaría encontrar una forma de interceptar esto para terminar con un correo electrónico con formato, en lugar de un correo electrónico de solo texto.
haemse

Debes consultar la documentación: msdn.microsoft.com/en-us/vba/vba-outlook . Supongo que tendrías que probar algo con el evento Application.ItemLoad, pero no pude hacerlo funcionar.
Konrad Botor

1
OK, lo he descubierto - ver mi edición
Konrad Botor

¡Esto se ve genial! Voy a probarlo. Así que el m_objMail_Open podría ser clave para esto. Gracias por ahora.
haemse

funciona hasta ahora ... sin embargo, estoy teniendo dificultades para agregar una de las firmas.
haemse
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.