SMTP-Send Mail. Помогите найти буг, исходник вылажую..

Тема в разделе "WASM.NETWORKS", создана пользователем ganes, 7 дек 2004.

  1. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    Народ, помогите найти в моей маленькой програмульке баг,

    все перепробовал, но не пашет. Прога должна отправить мне

    на мыло строку "Ху*ло Ексель!", но увы никак немогу

    разобраться в чем дело ;-((( Вопрос как вы уже заметили по

    цокетам и smtp. И подскажите как реализовать к этому

    поддержку аттачей, и чтоб все работало.. Зараннее благодарен...

    [​IMG] _927225716__smtp_send.asm
     
  2. SteelRat

    SteelRat New Member

    Публикаций:
    0
    Регистрация:
    26 авг 2004
    Сообщения:
    409
    Так, на вскидку не "EHLO TOVARISCH!", а "HELO TOVARISCH!" это из rfc. По поводу атачей когда-то, очень давно мыло было только текстовое и передача файлов не закладывалась, поэтому сейчас файлы перекодируют в "текст", используя base64 напрмер и в теле сообщения посылают "текст" приложенного атача. Если хочешь разобраться - читай rfc по smtp.
     
  3. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    Вот подисправил немного, проверить пахает или нет теперь - не получилось...



    [​IMG] 993324947__smtp.zip
     
  4. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    Поищи по форуму, я когда-то выкладывал (да и не только я) сорец своего мэйлера.
     
  5. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    Спасибо что подкоректил, но про проблема все равно не решаеться, даже незнаю что еще тут не-то. Я смотрел сырцы мейлеров, но там довольно громоздко и невсе у меня компиляться... Тут самый короткий и наглядный способ, и я хочу чтобы оно работало, если с этим неполучиться то тогда

    куда мне браться за более серьезные вещи, так что тема продолжаеться, и я выкладую листинг тутже, чтоб сразу было все видно... Я тут тоже немного потправил, там было

    вместо invoke send,sock,addr s_headers,szheaders,0

    invoke send,sock,addr s_headers,siseof szheaders,0





    ;-----------------SMTP-----------------------------------

    .386

    .model flat, stdcall

    option casemap :none



    include \masm32\include\windows.inc



    ;include \masm32\include\masm32.inc

    include \masm32\include\kernel32.inc

    include \masm32\include\ws2_32.inc ;wsock32.inc

    include \masm32\include\user32.inc



    includelib \masm32\lib\kernel32.lib

    ;includelib \masm32\lib\wininet.lib

    includelib \masm32\lib\ws2_32.lib ;wsock32.lib

    includelib \masm32\lib\user32.lib



    .data



    ;Какогото хера у меня этой структуры в масме v6 нету хм, жаль...

    ;SOCKADDR STRUC

    ;sin_family dw AF_INET

    ;port dw 0

    ;IP dd 0

    ; dq 0

    ;SOCKADDR ENDS



    SOCKADDR STRUCT

    sin_family WORD ?

    sin_port WORD ?

    sin_addr in_addr <>

    sin_zero BYTE 8 dup (?)

    SOCKADDR ENDS



    wsadata WSADATA <>

    s_addr SOCKADDR <>

    sock dd 0 ;сакет

    r_buf db 512 dup(0) ; Для приёма данных

    server db "smtp.yandex.ru",0

    ;--------------------------------------------------------------------- --

    s_helo db "HELO",0dh,0ah,0

    szhelo equ $ - offset s_helo

    s_from db "MAIL FROM:<tech-help2004@yandex.ru>",0dh,0ah,0

    szfrom equ $ - offset s_from

    s_to db "RCPT TO:<ganes@yandex.ru>",0dh,0ah,0

    szto equ $ - offset s_to

    s_data db "DATA",0dh,0ah,0

    szdata equ $ - offset s_data

    s_headers db "Subject: HELLO!",0dh,0ah

    msg db "HELLO NETworD!!!",0dh,0ah

    db 0dh,0ah,".",0dh,0ah,0

    szheaders equ $ - offset s_headers

    s_quit db "QUIT",0dh,0ah,0

    szquit equ $-s_quit

    ;--------------------------------------------------------------------- --

    msg_connect db "CONNECTED SUCCESFULLY!",0

    msg_connect2 db "MSG!",0



    .code



    start:

    ;инициализация

    invoke WSAStartup,101h,offset wsadata



    ;этот сокет

    invoke socket,AF_INET,SOCK_STREAM,0

    mov sock,eax



    mov s_addr.sin_family,AF_INET

    ;конектюсь на этот порт

    invoke htons,25

    mov s_addr.sin_port,ax



    ;перевод с ASCII в Hex :*)

    invoke gethostbyname,offset server

    mov eax,dword ptr [eax+12] ;HOSTENT_IP EQU 12 (указатель на IP)

    mov eax,dword ptr [eax] ;в еакс его!

    mov eax,dword ptr [eax]

    mov s_addr.sin_addr,eax ;<-сюда его



    .WHILE TRUE ;мотать длинный круг

    ;Подключаюся к церверу...

    invoke connect,sock,offset s_addr,sizeof s_addr

    cmp eax,0 ;подкониктилось? имхо "0" - все ОК

    je yez

    .ENDW

    yez:

    .IF EAX==0

    invoke MessageBox,0,addr msg_connect,addr msg_connect2,MB_OK

    .ENDIF



    ;поздоровкатся

    invoke send,sock,addr s_helo,szhelo,0

    ;

    invoke recv,sock,addr r_buf,512,0

    ;от кого:

    invoke send,sock,addr s_from,szfrom,0

    ;

    invoke recv,sock,addr r_buf,512,0

    ;кому:

    invoke send,sock,addr s_to,szto,0

    ;

    invoke recv,sock,addr r_buf,512,0

    ;начало данных ну и тела письма:

    invoke send,sock,addr s_data,szdata,0

    ;

    invoke recv,sock,addr r_buf,512,0

    ;заголовок+письмо

    invoke send,sock,addr s_headers,szheaders,0

    ;

    invoke recv,sock,addr r_buf,512,0

    ;прощание с цервером:

    invoke send,sock,addr s_quit,szquit,0

    ;

    invoke recv,sock,addr r_buf,512,0



    ;закрыть сакет и зарезирвированую под него память

    invoke closesocket,sock

    ;ДеИнициализация всей этой лабуды

    invoke WSACleanup

    ;Хаппи ЕРРОР ЕНД!

    invoke ExitProcess,0



    end start

    ;---------------------CUT HERE-------------------------

    [​IMG] 1977819925__smtp_.zip
     
  6. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    703
    В сырцах "Вирусного оружия" был почтовый червь там посмотри.
     
  7. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    ganes, слей последний MASM v8 с этого сайта и все должно компилиться и т.д.

    И кстати без аутентификации на smtp-сервере довольно сложно будет тебе что-то отправить...
     
  8. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
  9. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    Привет всем! Уже все!!! исправил вроде... РАБОТАЕТ!!!!

    Я немного усовершенствовал чтоб процес общения с цервером

    был нагляднее, все мессаги появляються соответственно в мессагаБоксах (MessageBox(...)).

    Вот еще хотел спросить, мож кто знает и необлиниться

    написать насчет аттачей, точнее желательно чтоб сразу

    файла 2-3 отправлять можнобыло, и как это происходит т.е

    сцервер сам с моего компа файл скачает или надо слать ввиде мессаги как кто-тот уже говорил в кодировке base64.

    А то я тут разглядывакл один мейлер на форуме, и чото

    неполучаеться толком файлу присобачить, скажем если он

    находиться в папке с:\папкамоя\фотка.джиф

    Если ктось знает як то хелп....

    Усовершенствованый смтп клиййент тута:

    [​IMG] _1534740533__smtp_release.zip
     
  10. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Код (Text):
    1. invoke  gethostbyname,offset server
    2. mov eax,dword ptr [[b]eax[/b]+12]       ;HOSTENT_IP EQU 12 (указатель на IP)
    3. ;Хаппи ЕРРОР ЕНД!
    Цо це таке? Ну не может память быть "read" :)
     
  11. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    Насчет base64 посмотри здесь:

    1.http://www.wasm.ru/forum/index.php?action=vthread&forum=12&topic=6338&page=0

    2.http://www.wasm.ru/forum/index.php?action=vthread&topic=7447&forum=4&page=-1



    :) будем ждать окончательного релиза...
     
  12. Vovane

    Vovane New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2004
    Сообщения:
    58
    Адрес:
    Afghanistan
    Вот прога сама себя отправляет по указанному мылу.

    Либа с иходником в аттаче.



    ;------------------------------------

    .486

    .model flat, stdcall

    option casemap :none





    include \masm32\include\windows.inc

    include \masm32\include\user32.inc

    include \masm32\include\kernel32.inc

    include \masm32\include\Ws2_32.inc

    include lib.inc



    includelib \masm32\lib\Ws2_32.lib

    includelib \masm32\lib\user32.lib

    includelib \masm32\lib\kernel32.lib

    includelib lib.lib





    .data?

    wsadata WSADATA <>

    pMessage dd ?

    szCMDBuff db 300 dup (?)

    .data

    szMessageText db " H e l l o ! ! ! :)))) ",0dh,0ah,0dh,0ah,0

    szAttach db "Readme.doc",0

    szSubjct db "Subject: Hello Boy!!!",0

    szfrom db "moimil@mail.com",0

    szto db "tvoimil@mail.com",0



    .code

    start:



    invoke GetModuleFileName, 0, addr szCMDBuff, 300

    invoke WSAStartup, 202h, addr wsadata

    invoke initlib

    invoke AssemleMesage, addr szfrom, addr szto, addr szCMDBuff, addr szAttach, addr szMessageText, addr pMessage

    invoke EmailSender, addr szfrom, addr szto, addr szSubjct, pMessage

    invoke ExitProcess, 0



    end start

    ;-----------------------------------------

    [​IMG] 1027282842__mail.rar
     
  13. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    Пасибки "Воване"

    Но мне больше интересен вопрос насчет составления свего

    смтпишного хедера вручную, где можно это все реализовать и чтоб

    сразу пару файлов отослить мона было. Все перекопал, нигде

    инфы нету, и большинство толком незнает як..:-(((
     
  14. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    Доброво времени суток все! Я вот в и-нете откопал инфу

    насчет нескольких аттачей, вот:

    ;---------------------------------------------------------s_helo db "HELO EHLO",0dh,0ah

    szhelo equ $ - offset s_helo

    s_from db "MAIL FROM:<tech_help@mail.ru>",0dh,0ah

    szfrom equ $ - offset s_from

    s_to db "RCPT TO: <donjuane@mail.ru>",0dh,0ah

    szto equ $ - offset s_to

    s_data db "DATA",0dh,0ah

    szdata equ $ - offset s_data

    s_headers db "TO: donjuane@mail.ru",0dh,0ah

    db "Subject: NeWWW2",0dh,0ah

    db "FROM: tech_help@mail.ru",0dh,0ah

    ;----------------------------------|\

    db "Content-Type: multipart/mixed; boundary=",022h,"next",022h,0dh,0ah,0dh,0ah

    ;----------------------------------|/

    db "--next",0dh,0ah

    db "Content-Type: application/octet-stream",0dh,0ah

    ;db "Content-Transfer-Encoding: base64",13,10

    db "Content-Disposition: attachment; filename=",022h,"qwfile.com",022h,0dh,0ah,0dh,0ah

    ;file body

    db "12345-fuckoff/на русском бл*я!",0dh,0ah,0dh,0ah



    db "--next",0dh,0ah

    db "Content-Type: application/octet-stream",0dh,0ah

    ;db "Content-Transfer-Encoding: base64",13,10

    db "Content-Disposition: attachment; filename=",022h,"qwfile2.doc",022h,0dh,0ah,0dh,0ah

    ;file body

    db "This is a body of file!",0b3h,0dh,0ah,0dh,0ah





    ;------------------------------|\

    db "--next",0dh,0ah,0dh,0ah

    ;тело письма

    s_body db "Assembler - Simple & Pure!",0dh,0ah

    db "Thanks to WASM.Ru forum and all COdeRzzz...",0dh,0ah

    db 0dh,0ah,".",0dh,0ah

    ;------------------------------|/

    szbody equ $ - offset s_body

    szheaders equ $ - offset s_headers

    s_quit db "QUIT",0dh,0ah

    szquit equ $ - s_quit

    ;---------------------------------------------------------



    Тут прикол в том, что надо вначале написать что наша мессага будет состоять из кусков, и назначить имя для

    разделения этих кусков, ну думаю разберетесь...







    [​IMG] _481945423__smtp_release.zip
     
  15. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    Вчера вот целый день искал, и немогу понять как отправить одно письмо сразу нескольким адресатам? Мож кто знает???

    Что мне надо подправить для этого в заголовках?
     
  16. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    А разве посмотреть "сорец" письма нельзя в том же аутглюке и бате?
     
  17. ganes

    ganes New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2004
    Сообщения:
    62
    Адрес:
    Ukraine
    Сенкс Stub! Я и недумал что ОутГлюк еще и такие вещи может

    моказать, Мелкософт все предусмотрел :)))

    Прикол оказался в повторениии команды

    "RCPT TO: <mail@host.ru>" ну а также вроде катит и эти команды: (проживающие в районе 'DATA')

    "CC: ml@host.ru"

    "BCC: ml@host.ru"