Hotelsoftware öffnet E-Mail-Fenster in Outlook mit generiertem Text - wie wird dieser automatisch in HTML geändert oder ein VBA-Skript ausgelöst?

376
haemse

Meine Situation: Eine Hotelverwaltungssoftware generiert einen Text und öffnet in Outlook ein Fenster "Neue E-Mail" mit dieser Textvoreinstellung. Ich benötige jedoch eine E-Mail im HTML-Format, wende einige Formatierungen an und füge die richtige Signatur hinzu.

Das E-Mail-Format besteht aus reinem Text. Wie kann die E-Mail automatisch in das HTML-Format geändert werden? Ich habe keine Möglichkeit, dies in der Hotelsoftware einzustellen.

Was könnte eine machbare Option sein? Automatisches Auslösen eines VBA-Skripts, das dies ändert?

0
Welches ist das Standard-E-Mail-Format in Outlook? Standardmäßig sollte es HTML sein. Wenn HTML eingestellt ist, die E-Mail jedoch immer noch im Nur-Text-Format geöffnet ist, können Sie versuchen, mit dem Entwickler der Verwaltungssoftware Kontakt aufzunehmen, um zu sehen, ob sie die Kontrolle darüber haben. Steve Fan vor 6 Jahren 0
Ja, das ist die Sache ... Standardmäßig ist Outlook in HTML eingestellt, aber das Hotel sw öffnet eine neue E-Mail im Nur-Text-Format. Ich kann das nicht ändern. wird aber vorerst bleiben. Ich brauche also einen Workaround. haemse vor 6 Jahren 0

1 Antwort auf die Frage

1
Konrad Botor

Ich kenne VBA nicht, aber in PowerShell würde das Skript so aussehen (beachten Sie, dass es VBA-Klassen verwendet):

#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() 

Ich hoffe das hilft.

Bearbeiten: Ich habe die Entwicklertools in Outlook aktiviert und anhand von Beispielen aus der Dokumentation meinen PowerShell-Code in eine VBA-Subroutine konvertiert:

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 

obwohl ich immer noch nicht weiß, wie ich das als Skript ausführen soll.

Bearbeiten: Ok, so verwenden Sie Events, um die E-Mail beim Öffnen zu bearbeiten:

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 

Sie müssen daran denken, die Bedingung in der Subroutine entsprechend m_objMail_Opender E-Mail-Adresse Ihrer Hotelsoftware und des generierten HTMLBody an Ihre gewünschte Ausgabe anzupassen.

Beachten Sie auch, dass das MailItem.Open -Ereignis ausgelöst wird, wenn eine E-Mail in einem neuen Fenster geöffnet wird. Sie müssen also prüfen, ob Sie mit neuen E- Not m_objMail.Sent And Not m_objMail.SavedMails zu tun haben, und nicht mit bereits existierenden E-Mails Sie müssen damit experimentieren).

Hey, vielen Dank! Mein Problem ist jedoch eher, dass die Hotelsoftware bereits eine Outlook-E-Mail initiiert (das Outlook-Unterfenster wird mit E-Mail-Text geöffnet). Ich möchte einen Weg finden, um dies abzufangen, um am Ende eine formatierte E-Mail zu erhalten, die nur aus einer E-Mail besteht. haemse vor 6 Jahren 0
Sie sollten die Dokumentation überprüfen: https://msdn.microsoft.com/en-us/vba/vba-outlook. Ich schätze, Sie müssten etwas mit dem Application.ItemLoad-Ereignis versuchen, aber ich konnte es nicht zum Laufen bringen. Konrad Botor vor 6 Jahren 0
OK, ich habe es herausgefunden - siehe meine Bearbeitung Konrad Botor vor 6 Jahren 1
das sieht gut aus! Ich werde es versuchen. M_objMail_Open könnte dafür der Schlüssel sein. thx für jetzt. haemse vor 6 Jahren 0
funktioniert soweit ... aber es fällt mir schwer, eine der Unterschriften hinzuzufügen. haemse vor 6 Jahren 0
Das klingt nach einem separaten Thema. Um eine lange Diskussion in den Kommentaren zu vermeiden, öffnen Sie bitte eine neue Frage mit Beschreibung Ihres neuen Problems und der Lösungen, die Sie bereits ausprobiert haben. Ich wäre Ihnen dankbar, wenn Sie meine Antwort auf diese Frage ebenfalls als akzeptiert markieren. Konrad Botor vor 6 Jahren 0