Send the message queue selecting the appropriate transactional delivery options.
If the message queue is transactional and there is an ambient MessageQueueTransaction in thread local storage (put there via the use of Spring's MessageQueueTransactionManager or TransactionalMessageListenerContainer), the message will be sent transactionally using the MessageQueueTransaction object in thread local storage. This lets you group together multiple messaging operations within the same transaction without having to explicitly pass around the MessageQueueTransaction object.
If the message queue is transactional but there is no ambient MessageQueueTransaction, then a single message transaction is created on each messaging operation. (MessageQueueTransactionType = Single).
If there is an ambient System.Transactions transaction then that transaction will be used (MessageQueueTransactionType = Automatic).
If the queue is not transactional, then a non-transactional send (MessageQueueTransactionType = None) is used.