As each draft is sent, there is one less email in the folder. The next email moves up to be the first in the collection. So as you loop, you can just keep sending the message folder.Items(1)
.
I have setup this code for some users at work (they have multiple mailboxes linked to their accounts):
Sub SendAllYourMailboxDrafts()
SendAllDrafts "your-mailbox-name"
End Sub
Sub SendAllDrafts(mailbox As String)
Dim folder As MAPIFolder
Dim msg As Outlook.MailItem
Dim count As Integer
Set folder = Outlook.GetNamespace("MAPI").Folders(mailbox)
Set folder = folder.Folders("Drafts")
If MsgBox("Are you sure you want to send the " & folder.Items.count & " items in your " & mailbox & " Drafts folder?", vbQuestion + vbYesNo) <> vbYes Then Exit Sub
count = 0
Do While folder.Items.count > 0
Set msg = folder.Items(1)
msg.Send
count = count + 1
Loop
MsgBox count & " message(s) sent", vbInformation + vbOKOnly
End Sub