O software do Hotel abre a janela de e-mail no Outlook com o texto gerado - como alterá-lo automaticamente para html ou acionar um script vba?

0

Minha situação: Um software de gerenciamento de hotel gera um texto e abre uma janela "Novo e-mail" no Outlook com essa predefinição de texto. No entanto, preciso que o e-mail esteja no formato HTML, aplique um pouco de formatação e adicione a assinatura correta.

O formato de e-mail é texto simples. O que é uma maneira possível de que o E-Mail mude automaticamente para o formato html. Eu não tenho nenhuma opção para configurar isso no software do hotel.

O que poderia ser uma opção viável? Automaticamente disparar um script VBA, que muda isso?

    
por haemse 24.07.2018 / 11:05

1 resposta

1

Eu não sei o VBA, mas no PowerShell o script ficaria assim (note que está usando classes 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 isso ajude.

Editar: ativamos as Ferramentas do desenvolvedor no meu Outlook e usamos exemplos de documentation Eu converti meu código do PowerShell para a sub-rotina 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

embora eu ainda não saiba como executar isso como um script.

Editar: Ok, então é assim que você usa os Eventos para editar o e-mail na abertura:

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

Você precisa se lembrar de alterar a condição na sub-rotina m_objMail_Open para o que for melhor para o e-mail gerado pelo software do hotel e para o HTMLBody gerado para se adequar à saída desejada.

Além disso, observe que o evento MailItem.Open é gerado sempre que qualquer e-mail é aberto em uma nova janela, portanto, você precisa verificar se está lidando com um novo e-mail em vez de um existente (por isso, acho Not m_objMail.Sent And Not m_objMail.Saved eliminar e-mails enviados e recebidos, mas você precisa experimentar isso).

    
por 24.07.2018 / 11:41