rsync -avzL --no-o --no-g ./* email@example.com:~/path/to/folder
Either it should copy transfer all files in the current directory and subdirectories recursively, including hidden files (i.e. whose name starts with a dot) or it may omit by default all hidden files, from both the current directory and the subdirectories, and you could use an --include rule to explicitly include hidden files (or there may exist a dedicated option).
Observed: hidden files (whose name starts with a dot) in the current directory are not sent. However, hidden files in all the subdirectory *are* transferred.
That's inconsistent and doesn't make any sense.
Drop the * in your source parameter.
And could you explain how that is the expected behavior?
source == copy the source directory
source/ == copy the contents of the directory
source/* == copy everything that your shell globs that wildcard into.
IOW, ./* won't copy anything that "echo ./*" doesn't list. Having a * in there also short-circuits --delete.
As noted, this is because your shell expands the wildcard.