Brian Chew
Brian Chew

Reputation: 55

Excel VBA save email after sent, only show preview email not sent email

I want to save the email in my local folder, and I saw this link https://www.mrexcel.com/forum/excel-questions/361751-vba-saving-email-only-after-send-pushed.html which basically use the class module to save the email after sending it out. However the problem is, the email saved is the preview email (email that is being displayed before you send the email) instead of sent email (email in which you cannot edit anything anymore)

Dim cls_OL As New clsOutlook
Public objMail_SentMsg As Object
Public Emailpath As String

Sub SendEmail()
    Dim OutMail As Object
    Set cls_OL.obj_OL = CreateObject("Outlook.Application")
    cls_OL.obj_OL.Session.Logon
    Set OutMail = cls_OL.obj_OL.CreateItem(0)
    Set objMail_SentMsg = OutMail
    Emailpath = "V:\test\emailname.msg"
    With OutMail
    On Error Resume Next
        'Assume this all strings variables are fine
        .HTMLBody = strmsgContent1 & strmsgContent2
        .to = ToEmail
        .CC = CC
        .BCC = BCC
        .Subject = Subject
        .Display
    End With
    Set OutMail = Nothing
End Sub
Option Explicit
Public WithEvents obj_OL As Outlook.Application

Private Sub obj_OL_ItemSend(ByVal Item As Object, Cancel As Boolean)
    objMail_SentMsg.SaveAs Emailpath
    Set obj_OL = Nothing
End Sub

It saved the email succesfully but as mentioned, only saved the preview/display email not the sent email.

Thank you so much for your help.

Upvotes: 1

Views: 1779

Answers (1)

niton
niton

Reputation: 9199

Instead of ItemSend monitor the SentItems folder with ItemAdd.

Do not save objMail_SentMsg, save the item identified by ItemAdd as being added to the folder.

If necessary to differentiate mail not to be saved, set up some unique characteristic in the mail when it is created.

Upvotes: 1

Related Questions