How can I automatically SEND all my emails in the DRAFTS folder of MS Outlook?
ISSUE:
I inadvertently set my PDF-eXPLODE email connection configuration to go to the DRAFTS folder of MS Outlook (MAPI connection). I have tried dragging the emails from DRAFTS to OUTBOX folder and then clicking the SEND/RECEIVE button, but nothing happened. Now I believe I have to open each 'draft' email manually and then click SEND. I have more than 500 emails in the DRAFTS folder awaiting SEND. I need a way to send these automatically without having to open each one and click SEND thereby avoiding hours of work. Can this be done?
ANSWER:
MS Outlook allows you to save many emails into the DRAFTS folder. However, there is no standard functionality that exists to be able to send those emails automatically in bulk, no ' SEND DRAFT EMAILS' button; however this can be achieved by copying and pasting the VBA program code below into a Outlook macro and assigning the macro to an Outlook ' Quick Access Toolbar ' button. Some of the following tip comes from https://www.datanumen.com/blogs/
- Press [ALT + F11] to access the shortcut for the Visual Basic (VBA) editor interface.
- If you see just the VBA Project name in bold on the Left Hand pane, then right click on the project name, and select Insert and in the fly-out menu, select Module OR
- If you see a menu item ' Modules ' under the Project name, you can alternatively right click on Modules and on the drop down menu, select Insert and in the fly out menu, click on Module (as in this image below) which will open a new code screen on the right window pane. Either of #2 or #3 is suitable for creating a blank Module in the right hand pane.
-
-
Now copy all the code (beginning with ' Public Declare... ' and continue to copy Sub SendAllDraftEmails() to End Sub ) from the yellow window below.
NOTE: if you are using a 64Bit version of MS Outlook, then you may get an error as follows "The code in this project must be updated for use on 64 bit systems.". This error is pointing to the line "Public Declare Sub Sleep Lib "kernel32 (ByVal Milliseconds As Long)". Then change this line to read: Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)Source Code TitlePublic Declare Sub Sleep Lib "kernel32" (ByVal Milliseconds As Long)
Sub SendAllDraftEmails()
Dim objDrafts As Outlook.Items
Dim objDraft As Object
Dim strPrompt As String
Dim nResponse As Integer
Dim i As Long
Dim merror As Integer, Gcount As IntegerOn Error GoTo err_handle
Set objDrafts = Outlook.Application.Session.GetDefaultFolder(olFolderDrafts).Items
Gcount = objDrafts.CountIf objDrafts.Count > 0 Then
strPrompt = "Are you sure you want to send out all the drafts?"
nResponse = MsgBox(strPrompt, vbQuestion + vbYesNo, "Confirm Sending")If nResponse = vbYes Then
For i = objDrafts.Count To 1 Step -1
objDrafts.Item(i).Send' **** USE ONLY ON LARGE BATCHES OF (say) 500+ emails if you need to slow the program speed down ****
' **** this next line will PAUSE the program for 2 seconds before sending the NEXT Draft email **' **** TO USE THE PROGRAM LINE REMOVE THE SINGLE QUOTE ' IN FRONT OF 'SLEEP 2000 ****
' Sleep 2000
Next
ElsestrPrompt = "You opted NOT to send any Draft emails"
nResponse = MsgBox(strPrompt, vbInformation + vbOKOnly, "Confirm Sending")
GoTo exit_forEnd If
If merror > 0 And merror = Gcount Then
MsgBox "No Draft Emails Sent!", vbCritical, "Email Sending Errors!"
ElseIf merror > 0 And merror < Gcount Then
MsgBox "Some Draft Emails were sent - " & Trim(Str(merror)) & " emails were not sent", vbCritical, "Email Sending Errors!"
Else
MsgBox "All Draft Emails Sent!", vbInformation, "Email Sending"
End If
Else
MsgBox "No Draft Emails Found!", vbExclamation, "No Draft Emails Found"
End IfExit Sub
err_handle:
If Err = "-2147467259" Then
MsgBox "There must be at least one email address or contact group in the TO, CC or BCC fields" & vbCrLf & "Fix it and re-run your emails", vbExclamation, "Error in Email Address!"
merror = 1 + merror
Resume Next
End IfExit_For:
End Sub
-
Now paste the copied code into the white background VB code window in Outlook. then click the SAVE button.
- Finally, click menu FILE/ Close and Return to Microsoft Outlook .
The above screen shows you how your program code (white) window will look after you pasted a copy of the code from the yellow window. (The above is a MS Outlook 2010 window)
Highlight the project name at the top (in bold) in the left-hand pane and then change the name of the project in the Properties window below in the left hand pane - see image below
We now have to assign a button to this macro on to the Quick Access Toolbar in Outlook
- Go to menu File --> Options --> Quick Access Toolbar tab.
- Now follow the steps shown in the picture below to add the new macro to Quick Access Toolbar.
- In the drop down 'Choose command from:', select Macros
- In the box below, select the 'SendAllDraftEmails' and click Add..
- SendAllDraftEmails code item will move to the righthand window and will be assigned a default icon on the Toolbar.
-
- To change the default icon assigned to the macro, click on the MODIFY button once you select/highlight the Macro name.
- Click OK button to exit the Quick Access Toolbar configuration screen. Once you exit, you will see the Quick Access Toolbar with a new button, as indicated by the red arrow in this image below.
- Note - If you have more than one email account in Outlook, then the 'DRAFTS' folder is taken to be the DRAFTS folder for the default email address. You can change your default to process emails in a different DRAFTS email folder (select FILE menu/Info/Account Settings and when the email account listing window opens, highlight the email account and click Set as Default
- Now click the Macro button in the Quick Access Toolbar to commence processing/sending emails.
Tip:
If you want to exclude some of the emails in the Drafts folder from sending at this time, make a sub folder in Drafts like "On Hold". Then drag the emails you don't want to send into this sub folder. They will not get sent and when you are ready, just drag them back into the Drafts folder, then click your macro 'SendAllDraftEmails' run button.
This code is set up as a Macro within MS Outlook. Depending on your security setting for Macros, this Macro may not run at all. Contact your IT personnel if unsure. Here is where you can check your Macro settings: In MS Outlook, click on the menu File / Option / Trust Center. Next click on the button TRUST CENTER SETTINGS.... Next click on the Macro Settings menu item on the left pane:
The last two options will work with this program code.
Note:
As stated earlier in this KB article, if you have more than one email account set up in MS Outlook (see FILE/INFO/ACCOUNT SETTINGS) , then the 'SendAllDraftEmails' button will only send the emails from the Drafts folder of the account set as default.
If you have a paid PDF-eXPLODE Annual Support Plan, you can email us at support@3000ad.com.au for help with any issue(s) you are having in getting this working.