def put_message(self, queue_name, content, visibility_timeout=None,<EOL>time_to_live=None, timeout=None):
_validate_encryption_required(self.require_encryption, self.key_encryption_key)<EOL>_validate_not_none('<STR_LIT>', queue_name)<EOL>_validate_not_none('<STR_LIT:content>', content)<EOL>request = HTTPRequest()<EOL>request.method = '<STR_LIT:POST>'<EOL>request.host_locations = self._get_host_locations()<EOL>request.path = _get_path(queue_name, True)<EOL>request.query = {<EOL>'<STR_LIT>': _to_str(visibility_timeout),<EOL>'<STR_LIT>': _to_str(time_to_live),<EOL>'<STR_LIT>': _int_to_str(timeout)<EOL>}<EOL>request.body = _get_request_body(_convert_queue_message_xml(content, self.encode_function,<EOL>self.key_encryption_key))<EOL>message_list = self._perform_request(request, _convert_xml_to_queue_messages,<EOL>[self.decode_function, False,<EOL>None, None, content])<EOL>return message_list[<NUM_LIT:0>]<EOL>
Adds a new message to the back of the message queue. 

The visibility timeout specifies the time that the message will be 
invisible. After the timeout expires, the message will become visible. 
If a visibility timeout is not specified, the default value of 0 is used.

The message time-to-live specifies how long a message will remain in the 
queue. The message will be deleted from the queue when the time-to-live 
period expires.

If the key-encryption-key field is set on the local service object, this method will
encrypt the content before uploading.

:param str queue_name:
    The name of the queue to put the message into.
:param obj content:
    Message content. Allowed type is determined by the encode_function 
    set on the service. Default is str. The encoded message can be up to 
    64KB in size.
:param int visibility_timeout:
    If not specified, the default value is 0. Specifies the
    new visibility timeout value, in seconds, relative to server time.
    The value must be larger than or equal to 0, and cannot be
    larger than 7 days. The visibility timeout of a message cannot be
    set to a value later than the expiry time. visibility_timeout
    should be set to a value smaller than the time-to-live value.
:param int time_to_live:
    Specifies the time-to-live interval for the message, in
    seconds. The maximum time-to-live allowed is 7 days. If this
    parameter is omitted, the default time-to-live is 7 days.
:param int timeout:
    The server timeout, expressed in seconds.
:return:
    A :class:`~azure.storage.queue.models.QueueMessage` object.
    This object is also populated with the content although it is not
    returned from the service.
:rtype: :class:`~azure.storage.queue.models.QueueMessage`