Чтобы избежать нагромождения в приложении лучше подключаться к I2P роутеру через SAM, например. Библиотеки есть на разных языках. SAM позволяет не зависеть от определённой реализации роутера и использовать любой.
Документация:
http://i2p-projekt.i2p/en/docs/api/samv3
Там же есть описание ещё нескольких API, возможно какой-нибудь другой больше подойдёт.
Обсуждение почты в I2P - http://purplebote.i2p/