Здравствуйте. Я столкнулся с такой проблемой, написал программу по отправке писем на сервер mail.ru. Если отправлять в качестве тела сообщения обычный текст – доходит нормально, если файл, то приложение почему-то вешается, не понимаю почему, вроде бы все правильно сделал. Файл кодирую в Base64, затем его отправляю, пробовал по 1 байту отправлять – вешается, целиком – также вешается…помогите, пожалуйста, может я, где-то неправильно реализовал код отправки файла?
то что бросилось в глаза - в szAttach_1(2) дописать надо файл, не включая путь. После того, как ты закодировал файл бейс64, его размер уже не pSize, а процентов на 25, наверное, больше
Не совсем понял, т.е. надо указать просто имя файла с расширением? Но тогда, как программа определит путь, какой именно файл и откуда ей надо "приаттачить"?. Если можно поясните на пальцах... Это уже сделал
да. это будет указывать почтовой программе, с каким именем отобразить вложенный файл а ты разве его не читаешь сам? не посылаешь на сервер (в закодированном виде) П.С. желательно, чтоб разобраться с вопросом попытаться самому посидеть с отладчиком, да и неплохо бы скомпиленный вариант в архив пихать.
Вот значит, отправку реализовал, письмо с аттачем отправляется, теперь сталкнулся с другой проблемой, при получении письма не могу извлечь аттач, почему?
смотря как извлекаешь.. а может неправильно посылаешь (скорее всего). на вопрос "почему" можно ответить, если увидеть исходники (желательно с бинарником)
Извините забыл выложить, исправлюсь и выкладываю их Вообщем письмо приходит, аттач я кое-как извлекаю, однако там совершенно нет того файла, который я "приаттачивал"... вообщем помогите пожалуйста, в чем я неправ
Код (Text): invoke lstrcpy, addr lpBuffer, addr szFile+1 invoke lstrcat, addr szAttach_1, addr lpBuffer; эта строчка invoke lstrcat, addr szAttach_1, addr szAttachEnd; и эта вытрут кусок szAttach_2 п.с. возьми отладчик, наконец
А какой вообще должен быть синтаксис отправки письма? т.е. тело письма? Просто у меня он на примере уроков, что на wasm.ru
Код (Text): invoke lstrcat, addr szAttach_1, addr lpBuffer; добавит lpBuffer сразу после szAttach_1, а там szAttach_2 находится. смотри под отладчиком и учи мсдн наизусть
Код (Text): Content-Type: application/octet-stream; name="12345.log" 2345.log" Content-Disposition: attachment; filename="12345.log" 2345.log" Вот собственно добился нормальной отправки файла, но есть одно "но", откуда берутся Код (Text): 2345.log" вот эти символы, ведь все правильно делаю, и под отладчиком тож смотрел, там все нормуль...
итак смотрим топики 10-13... теперь смотрим код Код (Text): invoke lstrcpy, addr lpBuffer, addr szFile+1 invoke lstrcat, addr [b]szAttach_7[/b], addr lpBuffer invoke lstrcat, addr [b]szAttach_7[/b], addr szAttachEnd invoke SendBodyStr, addr szAttach_7 invoke lstrcat, addr szAttach_8, addr szFile+1 invoke lstrcat, addr szAttach_8, addr szAttachEnd invoke SendBodyStr, addr szAttach_8 а также наши данные. Код (Text): szAttach_7 db 'Content-Type: application/octet-stream; name="', [b]0[/b] szAttach_8 db '[b]Content-Disposition[/b]: attachment; filename="', [b]0[/b] szAttach_9 db 'Content-Transfer-Encoding: base64' ,13, 10, 0 ;затем возврат каретки открываем МСДН. так. итого при вызове lstrcat к строке, указанной первым параметром, присоеденится строка указанная вторым. первым параметром указана szAttach_7, то есть к ней будет прилепленна ещё строка... куда она будет прилеплена? в конец, т.е. после szAttach_7, а за szAttach_7 идет szAttach_8 и к моменту lstrcat, addr szAttach_8 там будет '2345.log',0, а не Content-Disposition...