Всем привет! Отправляю почту с атачментом. Для кодирования файла в Base64 использую проц-у описанную в статье http://wasm.ru/article.php?article=simplesmtp Вот код: Код (Text): ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ; base64 encoder without dictionary by RT Fishel ; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ proc Base64Encode lpSrc, lpDst, dwstrlen push esi edi edx ebx mov esi, [lpSrc] mov edi, [lpDst] mov ebx, dword [dwstrlen] call b64.encode ; Return the address of last byte mov eax, edi pop ebx edx edi esi ret b64: .newline: call b64.store_crlf .encode: push (76 shr 2) + 1 pop edx .outer: dec edx je b64.newline lodsd dec esi inc ebx bswap eax mov ecx, 4 .inner: rol eax, 6 and al, 3Fh cmp al, 3Eh jb b64.testchar shl al, 2 sub al, ((3Eh shl 2) + 'A' - '+') and 0FFh .testchar: sub al, 4 cmp al, '0' jnl b64.store add al, 'A' + 4 cmp al, 'Z' jbe b64.store add al, 'a' - 'Z' - 1 .store: stosb dec ebx loopne b64.inner jne b64.outer mov al, '=' rep stosb xor al, al stosb ret .store_crlf: mov ax, 0a0dh stosw ret endp Но это проц-а неправильно кодирует !!! Для кодирования логина и пароля все работает а с файлом получается полная лажа Атачмент если и получается закодировать, то приходит кривой (архивы например не открываются) Что не так ? Проц-а кривая или у меня руки ? Заранее спасибо.
С той проблемой я разобрался. Все заработало. Письма отправляются. Но атачи приходят кривые. А это уже другая проблема. Алгоритм неправильно работает - после кодирования в теле встречаются нули (хотя, как я понимаю, их не должно быть) Иногда вообще просто зависает
На выходе должны быть только печатные символы: Прогони этой функцией сжатый раром архив на несколько мб и посмотри данные. Можешь в WinHex по F2, он покажет встречающиеся байты. Если есть ошибки, значит, выкинь функцию и возьми работающую (на сайте в сорцах есть).
Нашел в чем проблема Перед выходом записывается завершающий ноль: Код (Text): xor al, al stosb ret который и портил мне всю малину. Автор кода почему то решил, что финальный ноль всегда нужен. Тем не менее спасибо ему (автору) большое! Т.е. проц-а работает как-надо!