How can an application dynamically register protocol providers?

JavaMail 1.4 adds a new constructor public Provider(Type type, String protocol, String classname, String vendor, String version) for just such a need. You also need to use the new public void addProvider(Provider provider) method of Session for registration.