I was thinking you were perhaps using the wrong mailbox. So I experimented.
First, an outgoing message seems to be any message in the Drafts mailbox or the Outbox mailbox that is open in Mail. So, I opened two messages in my Drafts mailbox and ran variations of this script ...
tell application "Mail"
activate
set outList to outgoing messages
log (count items of outList) --> 2
set msg to (item 1 of outList)
id of msg -- Mail got an error: Can't get id of outgoing message id 7.
end tell
I have used 'id of msg' before and it works. But, I've never used it with 'outgoing message'.
In the special case of 'outgoing messages' there seems to be a problem. ALL of the properties of 'outgoing message' seem to be broken. This is particularly ironic for 'id' ... if Mail can get the id to put into an error message, then there is no error and the error message "Mail got an error: Can't get id of outgoing message id 7." does not exist. Perhaps it's a mirage.
I smell a bug, here.