Программное обеспечение отеля открывает окно электронной почты в Outlook с сгенерированным текстом - как автоматически изменить его на html или запустить скрипт vba?

292
haemse

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

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

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

0
Какой формат почты по умолчанию установлен в вашем Outlook. По умолчанию это должен быть HTML. Если для него установлено значение HTML, но электронное письмо все еще открыто в формате обычного текста, вы можете попробовать связаться с разработчиком программного обеспечения для управления, чтобы выяснить, имеют ли они какое-либо управление этим. Steve Fan 5 лет назад 0
да, это то, что ... по умолчанию в outlook установлен HTML, однако отель sw открывает новое электронное письмо в текстовом формате ... я не могу изменить это ... поговорить с разработчиками в первую очередь ... впрочем, пока останется. Так что мне нужен обходной путь. haemse 5 лет назад 0

1 ответ на вопрос

1
Konrad Botor

Я не знаю 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.Open возникает всякий раз, когда любое электронное письмо открывается в новом окне, поэтому вам нужно проверить, имеете ли вы дело с новым письмом, а не с существующим (поэтому я предполагаю Not m_objMail.Sent And Not m_objMail.Savedисключить отправленные и полученные письма, но вам нужно поэкспериментировать с этим).

эй, спасибо большое! тем не менее, моя проблема заключается в том, что программное обеспечение гостиницы уже инициирует электронное письмо с Outlook (подокно Outlook открывается с текстом электронной почты). Я хотел бы найти способ перехватить это, чтобы в итоге получить отформатированное электронное письмо, состоящее только из текстового электронного письма. haemse 5 лет назад 0
Вы должны проверить документацию: https://msdn.microsoft.com/en-us/vba/vba-outlook. Я предполагаю, что вам нужно что-то попробовать с событием Application.ItemLoad, но я не смог заставить его работать. Konrad Botor 5 лет назад 0
Хорошо, я понял это - см. Мое редактирование Konrad Botor 5 лет назад 1
это выглядит великолепно! Я попробую. Таким образом, m_objMail_Open может быть ключом к этому. спасибо сейчас. haemse 5 лет назад 0
работает до сих пор ... однако мне трудно добавить одну из подписей. haemse 5 лет назад 0
Это звучит как отдельная проблема. Чтобы избежать длительного обсуждения в комментариях, пожалуйста, откройте новый вопрос с описанием вашей новой проблемы и решениями, которые вы уже попробовали. Буду признателен, если вы отметите мой ответ на этот вопрос как принятый. Konrad Botor 5 лет назад 0