Outlook 365 Outlook Crashes on setting SaveSentMessageFolder

Status
Not open for further replies.

AlphonseG

New Member
Outlook version
Outlook 365 32 bit
Email Account
Office 365 Exchange
Using Outlook Desktop 365 with Office 365 Exchange. I have a single account with multiple shared mailboxes.
On replying to received messages I want to send from the shared mailbox that the message was addressed to.
When composing a new message, I want to set the SentOnBehalfOfName based on the current folder and save the sent message in the same folder.
With many, many hours of research and trials, I've come up with the below code.
Everything works as desired EXCEPT, saving the new message in the current folder. Setting SaveSentMessageFolder causes Outlook to crash and restart, disabling all VBA on restarting.
Setting it manually works fine. How can I set the SaveSentMessageFolder without crashing?

Code:
Public WithEvents myItem As Outlook.MailItem

Public WithEvents myOlInspectors As Outlook.Inspectors



Private Const conDefaultSendAddress As String = "mydefaultaddress"



Sub Initialize_Handler()

   On Error Resume Next

   Set myOlInspectors = Application.Inspectors

   If TypeName(Application.ActiveWindow) = "Explorer" Then

      Set myItem = Application.ActiveExplorer.Selection.item(1)

   ElseIf TypeName(Application.ActiveWindow) = "Inspector" Then

      Set myItem = Application.ActiveInspector.CurrentItem

   Else

      Set myItem = Nothing

   End If

End Sub



Private Sub Application_Startup()

   Initialize_Handler   '11/25/2022

End Sub



Private Sub myItem_Open(Cancel As Boolean)

'Set Send address and save folder for new email

Dim aE As Outlook.addressEntry

Dim strSaveFolder As String

Dim strFrom As String

Dim oFldr As Outlook.Folder



   If myItem.Recipients.Count = 0 Then

       strFrom = SendAddressForFolder

       myItem.Recipients.Add (strFrom) 'Issue with SentOnBehalfOfName

       myItem.Recipients.ResolveAll

       Set aE = myItem.Recipients(1).addressEntry

       myItem.Recipients.Remove (1)

       myItem.SentOnBehalfOfName = strFrom

       myItem.Sender = aE

       strSaveFolder = NewMailSaveFolder

       If strSaveFolder <> "" Then

         Set oFldr = FindOlFolder(Application.Session.Folders(1), strSaveFolder)

         Set myItem.SaveSentMessageFolder = oFldr 'crashes here

       End If

    End If

End Sub



Private Sub myOlInspectors_NewInspector(ByVal Inspector As Outlook.Inspector)

   Dim msg As Outlook.MailItem

 

   If Inspector.CurrentItem.Class = olMail Then

      Set msg = Inspector.CurrentItem

      If msg.Size = 0 Then

         Set myItem = Inspector.CurrentItem

         'can't set SentOnBehalfOfName here, it does not display

      End If

   End If

End Sub



Private Sub myItem_Forward(ByVal Forward As Object, Cancel As Boolean)

   Call AccountToSendViaEx(Forward, False)

End Sub



Private Sub myItem_Reply(ByVal Response As Object, Cancel As Boolean)

   Call AccountToSendViaEx(Response, True)

   Debug.Print "reply"

End Sub



Private Sub myItem_ReplyAll(ByVal Response As Object, Cancel As Boolean)

   Call AccountToSendViaEx(Response, True)

End Sub



Private Sub AccountToSendViaEx(ByRef Response As Object, ByVal replyAll As Boolean)

   Response.SentOnBehalfOfName = ReplyAddressUse

End Sub



Private Function ReplyAddressUse() As String

      Dim intRet As Integer

      Dim strAddress As String

      Dim recips As Outlook.Recipients

      Dim recip As Outlook.Recipient

      Dim pa As Outlook.PropertyAccessor

      Dim strRet As String

      Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"

        

10    On Error GoTo ErrLine

20       Set recips = myItem.Recipients

30       For Each recip In recips

40          Set pa = recip.PropertyAccessor

50          strAddress = pa.GetProperty(PR_SMTP_ADDRESS)

60          If strAddress Like "*@mydomain*" Then

70             strRet = strAddress

80             Exit For

90          End If

100      Next recip

110      If strRet <> "" Then

120         ReplyAddressUse = strRet

130      Else

140         ReplyAddressUse = SendAddressForFolder

150      End If

ExitLine:

160      On Error Resume Next

170      Set recips = Nothing

180      Set recip = Nothing

190      Set pa = Nothing

200      Exit Function



ErrLine:

210      MsgBox "Error: " & Err.Number & vbCrLf & Err.Description & vbCrLf & "Line: " & Erl

220      Resume ExitLine

        

End Function



Private Function SendAddressForFolder() As String

Dim strCurrentFolder As String

Dim strRet As String

   strCurrentFolder = Application.ActiveExplorer.CurrentFolder

   Select Case strCurrentFolder

   Case "mydesiredfolder1"

      strRet = "mysharedmailbox1"

   Case "mydesiredfolder2"

      strRet = "mysharedmailbox2"

   Case "mydesiredfolder3"

      strRet = "mysharedmailbox3"

   Case Else

      strRet = conDefaultSendAddress

   End Select

SendAddressForFolder = strRet

End Function



Private Function NewMailSaveFolder() As String

Dim strCurrentFolder As String

Dim strRet As String

   strCurrentFolder = Application.ActiveExplorer.CurrentFolder

   Select Case strCurrentFolder

   Case "mydesiredfolder1"

      strRet = strCurrentFolder

   Case Else

      strRet = ""

   End Select

   NewMailSaveFolder = strRet

End Function



Private Function FindOlFolder(ByRef objRootFolder As Object, ByVal strName As String) As Outlook.Folder

Dim objFldr As Outlook.Folder

   For Each objFldr In objRootFolder.Folders

      If objFldr.Name = strName Then

         Set FindOlFolder = objFldr

         Exit For

      ElseIf objFldr.Folders.Count > 0 Then

         Set FindOlFolder = FindOlFolder(objFldr, strName)

         If Not FindOlFolder Is Nothing Then

            Exit For

         End If

      End If

   Next

End Function



Private Sub Application_ItemLoad(ByVal item As Object)

   Call Initialize_Handler

End Sub
 
Last edited by a moderator:
On replying to received messages I want to send from the shared mailbox that the message was addressed to.
This should work natively if you have send as permissions
Everything works as desired EXCEPT, saving the new message in the current folder.
Current folder or current mailbox sent folder?

If current folder, are you getting the correct folder?
.
I'll need to test it to see if I can repro -
 
Thank you for the reply. Sorry for the delayed response as I didn't get an email notification. I tweaked my preferences, so hopefully will get them now.
This should work natively if you have send as permissions
No, it does not work natively. I do have the permissions and regularly send via the different mailboxes.
Background - I had been using POP for many years. While the main account and each shared mailbox were separate 'accounts' in Outlook, there was only one folder tree. Even with that, I still had to use code to reply/forward using the received email address.
I just switched to Exchange connection because Microsoft is disabling basic authentication Jan 1 and won't enable MFA for POP. When I did that, Outlook created a separate folder tree for each mailbox - what a mess. After much research, I found that removing permission on the shared mailboxes via PowerShell, then adding them back, with automapping flag = false, eliminated all of the extra folder trees, leaving me with one manageable tree. I still had to use the code for reply/forward. Just had to tweak it to assign SentOnBehalfOfName instead of an 'account'.
Current folder or current mailbox sent folder?
Current folder.
If current folder, are you getting the correct folder?
Yes, I stepped through and checked. Even made sure I declared the variable as an Outlook.Folder, not just an object (had tried that initially). BTW, my version is 16.0.12624.20278 32bit.
 
I'll try and test you code Friday and see if I can repro problems.
 
Status
Not open for further replies.
Similar threads
Thread starter Title Forum Replies Date
B Outlook 2016 Outlook crashes when trying to print certain emails Using Outlook 5
D Outlook 2007 crashes when opening an email Using Outlook 2
O Outlook 2016 crashes at start Using Outlook 14
mrje1 Outlook 2016 Manual Email Account Setup, what is the Office 365 option etc., and Crashes Using Outlook 0
Diane Poremsky Outlook crashes when viewing HTML Messages Using Outlook 0
Diane Poremsky Outlook Crashes When You Reply or Create a New Message Using Outlook 0
J Outlook 2013 crashes saving VBA & clicking tools | digital signature Outlook VBA and Custom Forms 1
U outlook 2010 freezes/crashes when opening encrypted e-mails Using Outlook 0
T Outlook Connector crashes outlook! Outlook VBA and Custom Forms 1
M Outlook 2007 crashes with BCM BCM (Business Contact Manager) 1
A Outlook can't remember outlook.com, Exchange password. Using Outlook 0
S Related messages show in main Outlook window vice new Advanced Find windows Using Outlook 1
H Force Outlook 2019 with GMail 2-Step to Require Login? Using Outlook 0
G Retaining Tabs in outlook body Using Outlook 2
V Setting up Outlook 2021 on new computer Using Outlook 2
G Add Map It button to Custom Contacts Form in Outlook Outlook VBA and Custom Forms 1
X Custom icon (not from Office 365) for a macro in Outlook Outlook VBA and Custom Forms 1
Victor_50 Problem - Google Workspace will stop "unsafe" access to Outlook end 2024 Using Outlook 3
C New pc, new outlook, is it possible to import auto-complete emailaddress Using Outlook 4
T Outlook 365 won't take new working password Using Outlook 0
S Create Outlook Task from Template and append Body with Email Body Outlook VBA and Custom Forms 4
P Can't add custom field to custom Outlook form, it always adds to the Folder instead Outlook VBA and Custom Forms 2
B Sync Outlook Public Folders to Contacts Using Outlook 2
D Delete Outlook emails from MS server Using Outlook 12
B Outlook tasks and PDF Using Outlook 4
D Outlook 2019 is no longer asking for password ... Using Outlook 5
Kika Melo How to mark as Junk any message not from Contacts (in Outlook.com) Using Outlook 3
L Outlook attachments from OneDrive as links Using Outlook 0
G Outlook 365 My iCloud Outlook doesn’t work after reinstalling Microsoft365 on Windows 10 PC – now I get error message on contacts and calendar Using Outlook 1
T How to Export & Import GMAIL Contacts into Outlook 2021 ? Using Outlook 4
M Synchronization and backup of Outlook from local to server. Using Outlook 8
T How to get an EVENT COLOR option in Outlook 2021 ? Using Outlook 0
K How can I delete an e-mail from Outlook Using Outlook 1
V Outlook Error The Attempted operation Failed. An Object Could Not be found Outlook VBA and Custom Forms 0
P Yahoo/IMAP folder rename by Outlook desktop 365 Using Outlook 0
A Outlook 2019 folder counter Using Outlook 0
A Relocate Search Bar in Outlook Using Outlook 2
e_a_g_l_e_p_i Need clarification on 2-Step Verification for Gmail using Outlook 2021 Using Outlook 10
L Opening People Outlook 2021 Using Outlook 2
e_a_g_l_e_p_i Outlook 2021 not letting me setup my Gmail using pop Using Outlook 1
Geldner Problem submitting SPAM using Outlook VBA Form Outlook VBA and Custom Forms 2
P VBA to add email address to Outlook 365 rule Outlook VBA and Custom Forms 0
M Outlook 2016 outlook vba to look into shared mailbox Outlook VBA and Custom Forms 0
P Can no longer sync Outlook with iPhone calendar after iPhone update to 17.1.1 Using Outlook 7
O Outlook - Switch from Exchange to IMAP Using Outlook 2
e_a_g_l_e_p_i Is it possible to have a reminder in Outlook 2021 for every 90 days Using Outlook 3
farrissf Outlook 2016 Optimizing Email Searches in Outlook 2016: Seeking Insights on Quick Search vs Advanced Search Features Using Outlook 0
C Advanced search terms for "Outlook Data File" Using Outlook 1
N Reply to Outlook messages by moving messages to a specific Outlook folder Outlook VBA and Custom Forms 1
O How to find out the domain and server settings that my Outlook is using? Using Outlook 2

Similar threads

Back
Top