Better diagnostics sending messages

When sending messages, trying to confirm, etc, raise exceptions
in more places rather than just logging a problem, and make some
of the exception messages more detailed.