Вы не можете точно знать размер заголовка.Поскольку все серверы, которые передают почту на следующий сервер, могут добавить некоторые данные в заголовок.Это может варьироваться от одной простой строки до полной оценки сканирования спама.
Таким образом, вы всегда ошибетесь в нескольких байтах.
Что касается размера вложений: онизакодировано, поэтому nr байтов не фактический размер, взятый.Если вы конвертируете их в Base64 и берете длину этой строки, это примерно тот размер, который они примут в письме (без заголовка вложения, в зависимости от имени вложения).Оценка составляет nr байтов * 1.33.
Вы можете получить хорошую подсказку, если почта достигает 10 МБ, но когда окончательная и полученная почта точно равна 10 МБ, неизвестно.