Моя ситуация: программное обеспечение управления гостиницей генерирует текст и открывает окно «Новая электронная почта» в Outlook с этой текстовой предустановкой. Однако мне нужно, чтобы электронная почта была в формате HTML, применила некоторое форматирование и добавила правильную подпись.

Формат электронной почты - простой текст. Какой возможный способ автоматического изменения электронной почты на формат html. У меня нет возможности установить это в программном обеспечении отеля.

Что может быть возможным вариантом? Автоматический запуск сценария VBA, что меняет это?

1 ответ1

1

Я не знаю VBA, но в PowerShell скрипт будет выглядеть так (обратите внимание, что он использует классы 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()

Надеюсь, это поможет.

Изменить: я включил Инструменты разработчика в моем Outlook и, используя примеры из документации, я преобразовал свой код PowerShell в подпрограмму 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

хотя я до сих пор не знаю, как запустить это как скрипт.

Изменить: Хорошо, вот как использовать события для редактирования электронной почты при открытии:

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

Вы должны помнить, чтобы поменять условие в подпрограмме m_objMail_Open на то, чтобы оно соответствовало электронной почте, сгенерированной вашим отельным программным обеспечением и сгенерированной HTMLBody, в соответствии с желаемым результатом.

Также обратите внимание, что MailItem.Событие открытия вызывается всякий раз, когда любое электронное письмо открывается в новом окне, поэтому вам нужно проверить, имеете ли вы дело с новым письмом, а не с существующим (так что я думаю, что Not m_objMail.Sent And Not m_objMail.Saved для устранения отправленных и полученных писем, но вам нужно поэкспериментировать с этим).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .