T>(лишняя функция TEncoding.UTF8.GetBytes, да еще и результат содержит переносы строк, что ломает base64)
Почему же лишняя? Указывать кодировку явным образом при преобразовании строк в бинарный вид и обратно это правильная практика.
Что касается переносов, то скорее всего кодирование идет по rfc2045, вместо rfc4648. Но это уже проблема (документации) библиотек, которые используются в этом коде.