Choose From Multiple Outlook Email Accounts
Marketing people send tons of emails daily, to their customer base.
If a customer is not interested in the offer, there are chances that the marketing email could go to spam folder.
How to overcome this issue?
Marketing people use a different email account to send same offer to same set of email distribution list. In this case, the automation explained in this article will be useful.
This code selects one of the multiple Outlook email accounts configured in your system. To know how to automate sending emails from Outlook or Excel, refer this topic.
Get All Email Accounts Configured in Outlook
The loop in this code reads all the accounts configured in the MS Outlook email client. If you are using this code from within Excel VBA, then add this reference before executing the code.
Note: Go to Menu from VBA editor -> Tools -> Reference -> Microsoft Outlook Object Library.
Also, ensure that Outlook is properly for atleast one email account in your computer to use this code.
Sub List_Outlook_Email_Accounts() 'Declare Outlook Object - Add reference to Microsoft Outlook Object Library Dim OutApp As Outlook.Application Dim oAccountIdx As Long 'Create Outlook Object - Ensure Outlook is properly configured in your machine Set OutApp = CreateObject("Outlook.Application") 'Loop through each Outlook Email Account For oAccountIdx = 1 To OutApp.Session.Accounts.Count MsgBox OutApp.Session.Accounts.Item(oAccountIdx) & " : This is account number " & oAccountIdx Next oAccountIdx 'Process Completed End Sub
If this reference is not added, then the Outlook Objects with the VBA code has to be created as late binding objects.
Now, we know how to reference difference email accounts with in Outlook. Now, lets see how to use any of them while sending any email.
Send Mail Using Outlook Email Accounts
You can choose the Email account within code wither with its index number as we saw in previous loop. Or use any of the other properties.
Sub Send_Emails_Using_Account() 'Declare Outlook Object - Add reference to Microsoft Outlook Object Library Dim OutApp As Outlook.Application Dim oOutlookEmail As Outlook.MailItem Dim objSendUsingAcct As Outlook.Account Dim strAcctName As String Dim oAccountIdx As Long 'Create Outlook Object Set OutApp = CreateObject("Outlook.Application") Set oOutlookEmail = OutApp.CreateItem(0) 'Get Acct strAcctName = "email@example.com" For oAccountIdx = 1 To Application.Session.Accounts.Count If VBA.InStr(1, Application.Session.Accounts.item(oAccountIdx).UserName, strAcctName, vbTextCompare) Then Set objSendUsingAcct = Application.Session.Accounts.item(idxAcct) Exit For End If Next If objSendUsingAcct Is Nothing Then MsgBox "Account Not Found: " & strAcctName Else 'Send Email Using Excel VBA Macro Code' With oOutlookEmail .To = "recepientId@gmail.com" .CC = "" .BCC = "" .Subject = "Happy New Year" .Body = ToMSg .SendUsingAccount = objSendUsingAcct .Display 'or just put .Send to directly send the mail instead of display End With End If Set OutlookMail = Nothing Set OutApp = Nothing End Sub
This is how we can have just one Outlook, Configure multiple any number of email accounts & send our clients from the account of our choice.
We don’t have to switch through each account every time manually. This happens when you have multiple email accounts or you share the same machine with multiple persons.
In either case, here is the code that will enable you to opt for any email account from within VBA.