Sharing knowledge is tough; I don't think there's a silver bullet and everyone wishes they could do it better. Some strategies we use:
- Mailing Lists - a collection of mailing lists people can subscribe to if they're interested in a topic. Bonus points if you dedupe messages, as it's kind of annoying to get the same message more than once. We BCC to avoid Reply-to-All discussions/arguments.
- Discussion board - discourse...
- Q&A - stack exchange like Q&A
- Cross-team focus groups - these come in many flavours from "group level" (several teams sharing a common manager) to company wide. Some organise meetups/presentations that are really popular.
I'd encourage "all" of the above in some flavour or another, as people learn and teach differently.