How do I format jenkins build server emails so that the content is not all on the same line?

You already noticed that you need to actually use HTML line breaks between tokens so they don't show up on the same line, so I'll just answer the part about the multiple change log entries on the same line.

From the Content Token Reference, bold emphasis mine:

${CHANGES, showPaths, showDependencies, format, pathFormat} Displays the changes since the last build.

  • showDependencies - if true, changes to projects this build depends on are shown.

    Defaults to false.

  • showPaths - if true, the paths modified by a commit are shown.

    Defaults to false.

  • format - for each commit listed, a string containing %X, where %X is one of %a for author, %d for date, %m for message, %p for paths, or %r for revision. Not all revision systems support %d and %r. If specified, showPaths is ignored.

    Defaults to "[%a] %m\n".

  • pathFormat - a string containing %p to indicate how to print paths.

    Defaults to "\t%p\n".

The unparameterized ${CHANGES} token is set up for display in a plain text email. You need to configure it so it displays properly in an HTML environment.

Example: <ul>${CHANGES, format="<li>[%a] %m</li>"}</ul>