Как вставить элементы HTML в тело письма Outlook - PullRequest
0 голосов
/ 10 января 2019

Здравствуйте, я новичок в Outlook, разработчик, у меня есть задача, т. Е. Когда пользователь готовит электронную почту с шаблонами по умолчанию во время отправки, мне нужно ввести в нее какой-нибудь HTML или Javascript код без отображения по почте.

Я получил некоторый основной код из онлайн, вот он,

пример кода:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
On Error Resume Next
If InStr(LCase(Item.To), "xxx@gmail.com") Then
prompt$ = "Are You Sure want to send this email to " & Item.To& " ?"
If MsgBox(prompt$, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check 
Address") = vbNo Then
Cancel = True
Dim objOutlookMsg As Outlook.MailItem
Set objOutlookMsg = Outlook.Application.CreateItem(olMailItem)
objOutlookMsg.HTMLBody = "<html><body><strong>HELLO OUTLOOK</strong></body></html>"
objOutlookMsg.Display
End If
End If
End Sub

приведенный выше код работает хорошо, но когда я нажимаю опцию отправки, открывается новое окно Outlook с полями HTML. я хочу, чтобы HTML-код присутствовал в том же окне, а не в другом новом окне

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Свойство Item.To Возвращает список отображаемых имен строк, то, что вам нужно Свойство Recipient.Address , которое будет возвращать строку, представляющую адрес электронной почты получателя. .

Также проверьте If Item.Class <> olMail if not then Exit Sub

Полный пример

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    If Item.Class <> olMail Then Exit Sub

    Dim Rcpt As Recipient
    Dim Prompt As String
        Prompt = "Are You Sure want to send this email to " & Item.To & " ?"

    For Each Rcpt In Item.Recipients
        If InStr(1, Rcpt.AddressEntry, "TEST@gmail.com", vbTextCompare) Then
            If MsgBox(Prompt, vbYesNo + vbQuestion + vbMsgBoxSetForeground, _
                                              "Check Address ") = vbNo Then
                Cancel = True
                Exit Sub
            End If

         Item.HTMLBody = "<html><body><strong>HELLO OUTLOOK</strong></body></html>" _
                                                                      & Item.HTMLBody
        End If
    Next
End Sub

Обновлено по комментариям

Просто удалите if MsgBox end if блок кода

Пример

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    If Item.Class <> olMail Then Exit Sub

    Dim Rcpt As Recipient

    For Each Rcpt In Item.Recipients
        If InStr(1, Rcpt.AddressEntry, "TEST@gmail.com", vbTextCompare) Then

         Item.HTMLBody = "<html><body><strong>HELLO OUTLOOK</strong></body></html>" _
                                                                      & Item.HTMLBody
        End If
    Next
End Sub
0 голосов
/ 10 января 2019

Если вы хотите изменить текст HTML отправляемого сообщения (оно передается в качестве параметра Item вашему обработчику событий), почему вы создаете новое сообщение вместо того, чтобы модифицировать существующее сообщение? Установите свойство HTMLBody для объекта Item.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...