Как отправить почту с вложениями?

Тема в разделе "WASM.NETWORKS", создана пользователем Meatcoins, 2 дек 2007.

  1. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Отправить письмо получается, а вложить файл не получается!
    Вот полный код программы:
    Код (Text):
    1. .386
    2.  
    3. .model flat,stdcall
    4. option casemap:none
    5.  
    6.  
    7. WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
    8.  
    9.  
    10.              include E:\masm32\include\windows.inc
    11.              include E:\masm32\include\kernel32.inc
    12.              include E:\masm32\include\user32.inc
    13.              include E:\masm32\include\advapi32.inc
    14.              include E:\masm32\include\gdi32.inc
    15.              include E:\masm32\include\ws2_32.inc
    16.              includelib E:\masm32\lib\kernel32.lib
    17.              includelib E:\masm32\lib\user32.lib
    18.              includelib E:\masm32\lib\advapi32.lib
    19.              includelib E:\masm32\lib\gdi32.lib
    20.              includelib E:\masm32\lib\ws2_32.lib
    21.              include E:\masm32\macros\Strings.mac
    22.  
    23. IN_ADDR struct
    24. s_addr dd ?
    25. IN_ADDR ends
    26.  
    27. SOCKADDR_IN struct
    28. sin_family dw ?
    29. sin_port dw ?
    30. sin_addr IN_ADDR <?>
    31. sin_zero db 8h dup(?)
    32. SOCKADDR_IN ends
    33.  
    34. HOSTENT struct
    35. h_name dd ?
    36. h_aliases dd ?
    37. h_addrtype dw ?
    38. h_length dw ?
    39. h_addr dd ?
    40. HOSTENT ends
    41.  
    42.  
    43. .DATA
    44. ClassName db "SimpleWinClass",0
    45.  
    46. AppName  db "Our First Window",0
    47. OurText  db "Win32 assembly is great and easy!",0
    48.  
    49.  
    50. .DATA?
    51. hInstance HINSTANCE ?
    52. CommandLine LPSTR ?
    53.  
    54.  
    55. .CODE
    56. start:
    57.     invoke GetModuleHandle, NULL
    58.  
    59.     mov    hInstance,eax
    60.     invoke GetCommandLine
    61.     mov CommandLine,eax
    62.     invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
    63.  
    64.     invoke ExitProcess,eax
    65.  
    66. WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR,
    67. CmdShow:DWORD
    68.  
    69.     LOCAL wc:WNDCLASSEX
    70.     LOCAL msg:MSG
    71.     LOCAL hwnd:HWND
    72.  
    73.     mov   wc.cbSize,SIZEOF WNDCLASSEX
    74.     mov   wc.style, CS_HREDRAW or CS_VREDRAW
    75.     mov   wc.lpfnWndProc, OFFSET WndProc
    76.     mov   wc.cbClsExtra,NULL
    77.     mov   wc.cbWndExtra,NULL
    78.     push  hInst
    79.     pop   wc.hInstance
    80.     mov   wc.hbrBackground,COLOR_WINDOW+1
    81.     mov   wc.lpszMenuName,NULL
    82.     mov   wc.lpszClassName,OFFSET ClassName
    83.     invoke LoadIcon,NULL,IDI_APPLICATION
    84.     mov   wc.hIcon,eax
    85.     mov   wc.hIconSm,eax
    86.     invoke LoadCursor,NULL,IDC_ARROW
    87.     mov   wc.hCursor,eax
    88.     invoke RegisterClassEx, addr wc
    89.  
    90.     invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
    91.            WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
    92.  
    93.            CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
    94.            hInst,NULL
    95.  
    96.     mov   hwnd,eax
    97.     invoke ShowWindow, hwnd,SW_SHOWNORMAL
    98.     invoke UpdateWindow, hwnd
    99.  
    100.  
    101. ;invoke CreateThread,0h,0h,offset Some,0h,0h,offset ThreadId
    102.  
    103.         .WHILE TRUE
    104.  
    105.                invoke GetMessage, ADDR msg,NULL,0,0
    106.                .BREAK .IF (!eax)
    107.                invoke TranslateMessage, ADDR msg
    108.                invoke DispatchMessage, ADDR msg
    109.  
    110.         .ENDW
    111.         mov     eax,msg.wParam
    112.         ret
    113. WinMain endp
    114.  
    115.  
    116. .data?
    117. controls dd 100h dup(?)
    118. wsadata WSADATA <>
    119. .code
    120.  
    121.  
    122.  
    123.  
    124.  
    125.  encodeBase64 proc
    126.         xor     esi,esi ; encodeBase64 by Bumblebee. All rights reserved ;)
    127.         call    over_enc_table
    128.         db      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    129.         db      "abcdefghijklmnopqrstuvwxyz"
    130.         db      "0123456789+/"
    131.  over_enc_table:
    132.         pop     edi
    133.         push    ebp
    134.         xor     ebp,ebp
    135.  baseLoop:
    136.         movzx   ebx,byte ptr [eax]
    137.         shr     bl,2
    138.         and     bl,00111111b
    139.         mov     bh,byte ptr [edi+ebx]
    140.         mov     byte ptr [edx+esi],bh
    141.         inc     esi
    142.  
    143.         mov     bx,word ptr [eax]
    144.         xchg    bl,bh
    145.         shr     bx,4
    146.         mov     bh,0
    147.         and     bl,00111111b
    148.         mov     bh,byte ptr [edi+ebx]
    149.         mov     byte ptr [edx+esi],bh
    150.         inc     esi
    151.  
    152.         inc     eax
    153.         mov     bx,word ptr [eax]
    154.         xchg    bl,bh
    155.         shr     bx,6
    156.         xor     bh,bh
    157.         and     bl,00111111b
    158.         mov     bh,byte ptr [edi+ebx]
    159.         mov     byte ptr [edx+esi],bh
    160.         inc     esi
    161.  
    162.         inc     eax
    163.         xor     ebx,ebx
    164.         movzx   ebx,byte ptr [eax]
    165.         and     bl,00111111b
    166.         mov     bh,byte ptr [edi+ebx]
    167.         mov     byte ptr [edx+esi],bh
    168.         inc     esi
    169.         inc     eax
    170.  
    171.         inc     ebp
    172.         cmp     ebp,24
    173.         jna     DontAddEndOfLine
    174.  
    175.         xor     ebp,ebp                         ; Добавляем новую линию
    176.         mov     word ptr [edx+esi],0A0Dh
    177.         inc     esi
    178.         inc     esi
    179.         test    al,00h                          ; Оптимизиpовано
    180.         org     $-1
    181.  DontAddEndOfLine:
    182.         inc     ebp
    183.         sub     ecx,3
    184.         or      ecx,ecx
    185.         jne     baseLoop
    186.  
    187.         mov     ecx,esi
    188.         add     edx,esi
    189.         pop     ebp
    190.         ret
    191.  encodeBase64 endp
    192.  
    193.  
    194.  
    195.  
    196.  
    197.  
    198.  
    199.  
    200.  
    201.  
    202.  
    203.  
    204. myconnect PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    205.  
    206.  
    207. .data
    208. helo_mes db "HELO",0h
    209. mail_from db "MAIL FROM:<",0h
    210. rcpt_mes db "RCPT TO:<",0h
    211. datames db "DATA",0Dh,0Ah,0h
    212. subj_mes db "SUBJECT: ",0h
    213. my_message db "Hello World!!!",0Dh,0Ah,0Dh,0Ah,".",0Dh,0Ah,0h
    214. quit_mes db "QUIT",0Dh,0Ah,0h
    215. .code
    216.  
    217. recvy PROTO :DWORD,:DWORD
    218.  
    219. recvy proc memheap:DWORD,s:DWORD
    220.  
    221. mov eax,memheap
    222. add eax,1000h
    223. push eax
    224. invoke lstrlen,eax
    225. pop edx
    226. add eax,edx
    227. invoke recv,s,eax,100h,0h
    228.  
    229. ret
    230. recvy endp
    231.  
    232.  
    233. clear PROTO :DWORD
    234.  
    235. clear proc memheap:DWORD
    236. mov edi,memheap
    237. mov ecx,200h
    238. xor eax,eax
    239. rep stosb
    240. ret
    241. clear endp
    242.  
    243. myconnect proc hWnd,hMemo,hEdit,hEdit2,hEdit3,hEdit4,hMemo2
    244. LOCAL s:SOCKET
    245. LOCAL memheap:DWORD
    246. LOCAL procheap:DWORD
    247. LOCAL sin:SOCKADDR_IN
    248. LOCAL memory:DWORD
    249.  
    250.  
    251. ;jmp endy
    252.  
    253. invoke GetProcessHeap
    254. mov procheap,eax
    255. invoke HeapAlloc,eax,HEAP_ZERO_MEMORY,4000h
    256. mov memheap,eax
    257.  
    258.  
    259.  
    260. invoke WSAStartup,101h,offset wsadata
    261. invoke socket,AF_INET,SOCK_STREAM,0h
    262. mov s,eax
    263.  
    264. mov eax,memheap
    265. add eax,5h
    266. invoke SendMessage,hEdit,WM_GETTEXT,50h,eax
    267. mov eax,memheap
    268. add eax,5h
    269. invoke gethostbyname,eax
    270. assume eax:ptr HOSTENT
    271. mov eax,[eax].h_addr
    272. assume eax:nothing
    273. mov eax,[eax]
    274. mov eax,[eax]
    275.  
    276.     MOV  sin.sin_addr.s_addr,eax
    277.     MOV  sin.sin_port,1900h
    278.     MOV  sin.sin_family,AF_INET
    279.  
    280.  
    281. invoke connect,s,addr sin,sizeof(sockaddr_in)
    282.  
    283. ;xor eax,eax
    284. .if eax==0h
    285.  
    286. mov eax,memheap
    287. add eax,1000h
    288. invoke recv,s,eax,100h,0h
    289.  
    290. invoke lstrcpy,memheap,offset helo_mes
    291. add eax,sizeof helo_mes-1h
    292. mov byte ptr [eax],20h
    293. inc eax
    294. push eax
    295. invoke SendMessage,hEdit,WM_GETTEXT,50h,eax
    296. pop edx
    297. mov dword ptr [eax][edx],0A0Dh
    298. invoke lstrlen,memheap
    299. invoke send,s,memheap,eax,0h
    300.  
    301. mov eax,memheap
    302. add eax,1000h
    303. invoke recv,s,eax,100h,0h
    304.  
    305. invoke clear,memheap
    306.  
    307. invoke lstrcpy,memheap,offset mail_from
    308. add eax,sizeof mail_from-1h
    309. push eax
    310. invoke SendMessage,hEdit2,WM_GETTEXT,50h,eax
    311. pop edx
    312. mov dword ptr [eax][edx],'>' or 0A0D00h
    313. add eax,3h
    314.  
    315. invoke lstrlen,memheap
    316. invoke send,s,memheap,eax,0h
    317.  
    318.  
    319. invoke recvy,memheap,s
    320. invoke clear,memheap
    321.  
    322. invoke lstrcpy,memheap,offset rcpt_mes
    323. add eax,sizeof rcpt_mes-1h
    324. push eax
    325. invoke SendMessage,hEdit3,WM_GETTEXT,50h,eax
    326. pop edx
    327. mov dword ptr [eax][edx],'>' or 0A0D00h
    328. add eax,3h
    329. invoke lstrlen,memheap
    330. invoke send,s,memheap,eax,0h
    331.  
    332. mov eax,memheap
    333. add eax,1000h
    334. push eax
    335. invoke lstrlen,eax
    336. pop edx
    337. add eax,edx
    338. invoke recv,s,eax,100h,0h
    339.  
    340.  
    341. invoke clear,memheap
    342.  
    343. invoke lstrcpy,memheap,offset datames
    344. mov eax,sizeof datames-1h
    345. invoke send,s,memheap,eax,0h
    346.  
    347.  
    348. invoke recvy,memheap,s
    349. invoke clear,memheap
    350.  
    351.  
    352.  
    353.  
    354. invoke VirtualAlloc,0h,100000h,MEM_COMMIT,PAGE_READWRITE
    355. mov memory,eax
    356. invoke lstrcpy,memory,offset subj_mes
    357. add eax,sizeof subj_mes-1h
    358. push eax
    359. invoke SendMessage,hEdit4,WM_GETTEXT,50h,eax
    360. pop edx
    361. mov word ptr [eax][edx],0A0Dh
    362. add eax,2h
    363. mov word ptr [eax][edx],0A0Dh
    364. add eax,2h
    365. add eax,edx
    366. invoke SendMessage,hMemo2,WM_GETTEXT,400h,eax
    367.  
    368. .data
    369. comment @
    370. MyFile db "MIME-Version: 1.0",0Ah,0Dh
    371. db "Content-Type: multipart/mixed;",0Ah,0Dh
    372. db 'boundary="----=_NextPart_000_0005_01BDE2FC.8B286C00"',0Ah,0Dh
    373. db "X-Priority: 3",0Ah,0Dh
    374. db "X-MSMail-Priority: Normal",0Ah,0Dh
    375. db "X-Unsent: 1",0Ah,0Dh
    376. db "X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3",0Ah,0Dh
    377. db 0Ah,0Dh
    378. db "------=_NextPart_000_0005_01BDE2EC.8B286C00",0Ah,0Dh
    379. db "Content-Type: text/plain; charset=iso-8859-1"
    380. db "Content-Transfer-Encoding: quoted-printable"
    381. db 0Ah,0Dh
    382. db "Put here whatever you want",0Ah,0Dh
    383. db 0Ah,0Dh
    384. db "------=_NextPart_000_0005_01BDE2EC.8B286C00",0Ah,0Dh
    385. db "Content-Type: application/octet-stream; name=filename.exe",0Ah,0Dh
    386. db "Content-Transfer-Encoding: base64",0Ah,0Dh
    387. db 'Content-Disposition: attachment; filename="filename.exe"',0Ah,0Dh
    388. db 0Ah,0Dh
    389. ;db "Here would come BASE64 encoded file.",0Ah,0Dh,0h
    390. @
    391.  
    392.  
    393. MyFile db "MIME-Version: 1.0"
    394. db "Content-Type: multipart/mixed;"
    395. db 'boundary="----=_NextPart_000_0005_01BDE2FC.8B286C00"'
    396. db "X-Priority: 3"
    397. db "X-MSMail-Priority: Normal"
    398. db "X-Unsent: 1"
    399. db "X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3"
    400. db "------=_NextPart_000_0005_01BDE2EC.8B286C00"
    401. db "Content-Type: text/plain; charset=iso-8859-1"
    402. db "Content-Transfer-Encoding: quoted-printable"
    403. db "Put here whatever you want"
    404. db "------=_NextPart_000_0005_01BDE2EC.8B286C00"
    405. db "Content-Type: application/octet-stream; name=filename.exe"
    406. db "Content-Transfer-Encoding: base64"
    407. db 'Content-Disposition: attachment; filename="filename.exe"'
    408. db 36h,63h,23h
    409.  
    410.  
    411. comment @
    412. MyFile db 'Content-Type: application/octet-stream; name="file.bin"'
    413. db 'Content-Disposition: attachment; filename="file.bin"'
    414. db "Content-Transfer-Encoding: base64"
    415. db 36h,63h,23h
    416. db 0h
    417. @
    418. .code
    419.  
    420. invoke lstrlen,memory
    421. mov edx,memory
    422. mov word ptr [eax][edx],0A0Dh
    423. add eax,2h
    424. mov word ptr [eax][edx],0A0Dh
    425. add eax,2h
    426. add eax,memory
    427. invoke lstrcpy,eax,offset MyFile
    428.  
    429.  
    430. invoke lstrlen,memory
    431. mov edx,memory
    432. mov dword ptr [eax][edx],0A0Dh
    433. inc eax
    434. inc eax
    435. mov dword ptr [eax][edx],2E0A0Dh
    436. add eax,3h
    437. mov dword ptr [eax][edx],0A0Dh
    438. inc eax
    439. inc eax
    440.  
    441.  
    442. invoke lstrlen,memory
    443. invoke send,s,memory,eax,0h
    444. invoke VirtualFree,memory,100000h,MEM_DECOMMIT
    445.  
    446.  
    447.  
    448.  
    449.  
    450.  
    451. invoke recvy,memheap,s
    452. invoke clear,memheap
    453.  
    454. invoke lstrcpy,memheap,offset quit_mes
    455. mov eax,sizeof quit_mes-1h
    456. invoke send,s,memheap,eax,0h
    457.  
    458. mov eax,memheap
    459. add eax,1000h
    460. push eax
    461. push eax
    462. invoke lstrlen,eax
    463. pop edx
    464. add eax,edx
    465. invoke recv,s,eax,100h,0h
    466. add edx,eax
    467. pop eax
    468. invoke SendMessage,hMemo,WM_SETTEXT,edx,eax
    469.  
    470. .endif
    471.  
    472.  
    473.  
    474. invoke closesocket,s
    475. invoke WSACleanup
    476.  
    477. invoke HeapFree,procheap,0h,memheap
    478.  
    479.  
    480.  
    481.  
    482.  
    483.  
    484. endy:
    485.  
    486.  
    487. ret
    488. myconnect endp
    489.  
    490.  
    491. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    492. CONTSTR STRUCT
    493. button dd ?
    494. edit dd ?
    495. edit2 dd ?
    496. edit3 dd ?
    497. edit4 dd ?
    498. memo dd ?
    499. memo2 dd ?
    500. CONTSTR ENDS
    501.  
    502. mov esi,offset controls
    503. assume esi:ptr CONTSTR
    504. .if uMsg==WM_CREATE
    505.  
    506. invoke CreateWindowEx,0h,$CTA0("BUTTON"),$CTA0("Send"),WS_VISIBLE or WS_CHILD or BS_DEFPUSHBUTTON,160,20,80,20,hWnd,0,hInstance,0
    507. mov [esi].button,eax
    508.  
    509. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("www.mail.ru"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,270,50,200,20,hWnd,0,hInstance,0
    510. ;invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("User-91396ed1f7"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,270,50,200,20,hWnd,0,hInstance,0
    511. mov [esi].edit,eax
    512.  
    513. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("xxx@rambler.ru"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,490,50,200,20,hWnd,0,hInstance,0
    514. mov [esi].edit2,eax
    515.  
    516. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("xxx@rambler.ru"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,490,80,200,20,hWnd,0,hInstance,0
    517. mov [esi].edit3,eax
    518.  
    519. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("Hello"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,490,110,200,20,hWnd,0,hInstance,0
    520. mov [esi].edit4,eax
    521.  
    522. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0(""),WS_VISIBLE or WS_CHILD or WS_BORDER or WS_VSCROLL or ES_MULTILINE,10,50,250,250,hWnd,0,hInstance,0
    523. mov [esi].memo,eax
    524.  
    525. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("Hello "),WS_VISIBLE or WS_CHILD or WS_BORDER or WS_VSCROLL or ES_MULTILINE,270,80,200,220,hWnd,0,hInstance,0
    526. mov [esi].memo2,eax
    527.  
    528. ;invoke SendMessage,hWnd,WM_PAINT,0h,0h
    529. .endif
    530.  
    531.  
    532. .if uMsg==WM_COMMAND
    533. mov eax,dword ptr [esi].button
    534.  .if lParam==eax
    535.  
    536. invoke myconnect,hWnd,[esi].memo,[esi].edit,[esi].edit2,[esi].edit3,[esi].edit4,[esi].memo2
    537.  
    538.  
    539.  .endif
    540.  
    541. .endif
    542.  
    543.  
    544.     .if uMsg==WM_PAINT
    545.  
    546.     .endif
    547.  
    548.  
    549.  
    550. assume esi:nothing
    551.     .if uMsg==WM_DESTROY
    552.         invoke PostQuitMessage,NULL
    553.         .else
    554.        
    555.     invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    556.  ;   xor   eax, eax
    557.     .endif
    558.  
    559.  
    560.  
    561.  
    562.     ret
    563. WndProc endp
    564.  
    565.  
    566. end start
    Вот так, например, не получается!
    Код (Text):
    1. MyFile db "MIME-Version: 1.0",0Ah,0Dh
    2. db "Content-Type: multipart/mixed;",0Ah,0Dh
    3. db 'boundary="----=_NextPart_000_0005_01BDE2FC.8B286C00"',0Ah,0Dh
    4. db "X-Priority: 3",0Ah,0Dh
    5. db "X-MSMail-Priority: Normal",0Ah,0Dh
    6. db "X-Unsent: 1",0Ah,0Dh
    7. db "X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3",0Ah,0Dh
    8. db 0Ah,0Dh
    9. db "------=_NextPart_000_0005_01BDE2EC.8B286C00",0Ah,0Dh
    10. db "Content-Type: text/plain; charset=iso-8859-1"
    11. db "Content-Transfer-Encoding: quoted-printable"
    12. db 0Ah,0Dh
    13. db "Put here whatever you want",0Ah,0Dh
    14. db 0Ah,0Dh
    15. db "------=_NextPart_000_0005_01BDE2EC.8B286C00",0Ah,0Dh
    16. db "Content-Type: application/octet-stream; name=filename.exe",0Ah,0Dh
    17. db "Content-Transfer-Encoding: base64",0Ah,0Dh
    18. db 'Content-Disposition: attachment; filename="filename.exe"',0Ah,0Dh
    19. db 0Ah,0Dh
     
  2. tclover

    tclover New Member

    Публикаций:
    0
    Регистрация:
    17 май 2007
    Сообщения:
    45
    http://frmn.org.ua/artc/smtp.html
     
  3. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Да! Очень любопытная статейка, но помоему, я делаю тоже самое!
    Мне надо файл вложить!
    А там написано:
    Ну, я так и делаю а в письме написано:

    Тема: Hello77

    Hello 77

    Content-Type: application/octet-stream; name="file.bin"
    Content-Disposition: attachment; filename="file.bin"
    Content-Transfer-Encoding: base64
    NmMjiFci

    То есть это попадает не во вложение, а сообщение!!!
    И почему???
     
  4. Mental_Mirror

    Mental_Mirror New Member

    Публикаций:
    0
    Регистрация:
    7 май 2007
    Сообщения:
    431
    0Ah,0Dh -> 0Dh,0Ah
     
  5. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Последнюю секцию закрой на всякий случай:

    ------=_NextPart_000_0005_01BDE2EC.8B286C00--
     
  6. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Вот такое сообщение в письме - вкладок нет:

    Тема: Hello 22

    Hello

    Content-Type: application/octet-stream; name="file.bin"
    Content-Disposition: attachment; filename="file.bin"
    Content-Transfer-Encoding: base64
    NmMjiFci------=_NextPart_000_0005_01BDE2EC.8B286C00--


    0Ah,0Dh заменил на 0Dh,0Ah - всё равно не прёт...
    Вместо www.mail.ru попробывал с www.yandex.ru - та же фигня...
    Вот такие дела...

    Код (Text):
    1. MyFile db 'Content-Type: application/octet-stream; name="file.bin"',0Dh,0Ah
    2. db 'Content-Disposition: attachment; filename="file.bin"',0Dh,0Ah
    3. db 'Content-Transfer-Encoding: base64',0Dh,0Ah,0h
    4.  
    5.  
    6. coding_data db 36h,63h,23h,88h,57h,22h
    7.  
    8. end_of_File db "------=_NextPart_000_0005_01BDE2EC.8B286C00--",0Dh,0Ah,0h
     
  7. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Положи нормальны eml файл... тогда можно будет что-то поправить...
     
  8. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Выкладываю:

    Из Ethereal'а:
    Код (Text):
    1. DATA
    2.  
    3. 354 Enter mail, end with "." on a line by itself
    4.  
    5. SUBJECT: Hello
    6.  
    7.  
    8.  
    9. Hello 876.876.
    10.  
    11.  
    12.  
    13. Content-Type: application/octet-stream; name="file.bin"
    14.  
    15. Content-Disposition: attachment; filename="file.bin"
    16.  
    17. Content-Transfer-Encoding: base64
    18.  
    19. NmMjiFci------=_NextPart_000_0005_01BDE2EC.8B286C00--
    20.  
    21.  
    22.  
    23.  
    24.  
    25. .
    26.  
    27. 250 2.0.0 lB5HgQ3M009713 Message accepted for delivery
    28.  
    29. QUIT
    Код (Text):
    1. 0000   00 50 56 ed 54 a0 00 0c 29 d9 c1 6f 08 00 45 00  .PV.T...)..o..E.
    2. 0010   01 1c 05 c1 40 00 80 06 b9 8f c0 a8 17 80 4d 58  ....@.........MX
    3. 0020   15 0b 04 7e 00 19 e4 c0 69 3f 6e 0e 23 86 50 18  ...~....i?n.#.P.
    4. 0030   f9 ca 73 aa 00 00 53 55 42 4a 45 43 54 3a 20 48  ..s...SUBJECT: H
    5. 0040   65 6c 6c 6f 0d 0a 0d 0a 48 65 6c 6c 6f 20 38 37  ello....Hello 87
    6. 0050   36 e5 38 37 36 e5 0d 0a 0d 0a 43 6f 6e 74 65 6e  6.876.....Conten
    7. 0060   74 2d 54 79 70 65 3a 20 61 70 70 6c 69 63 61 74  t-Type: applicat
    8. 0070   69 6f 6e 2f 6f 63 74 65 74 2d 73 74 72 65 61 6d  ion/octet-stream
    9. 0080   3b 20 6e 61 6d 65 3d 22 66 69 6c 65 2e 62 69 6e  ; name="file.bin
    10. 0090   22 0d 0a 43 6f 6e 74 65 6e 74 2d 44 69 73 70 6f  "..Content-Dispo
    11. 00a0   73 69 74 69 6f 6e 3a 20 61 74 74 61 63 68 6d 65  sition: attachme
    12. 00b0   6e 74 3b 20 66 69 6c 65 6e 61 6d 65 3d 22 66 69  nt; filename="fi
    13. 00c0   6c 65 2e 62 69 6e 22 0d 0a 43 6f 6e 74 65 6e 74  le.bin"..Content
    14. 00d0   2d 54 72 61 6e 73 66 65 72 2d 45 6e 63 6f 64 69  -Transfer-Encodi
    15. 00e0   6e 67 3a 20 62 61 73 65 36 34 0d 0a 4e 6d 4d 6a  ng: base64..NmMj
    16. 00f0   69 46 63 69 2d 2d 2d 2d 2d 2d 3d 5f 4e 65 78 74  iFci------=_Next
    17. 0100   50 61 72 74 5f 30 30 30 5f 30 30 30 35 5f 30 31  Part_000_0005_01
    18. 0110   42 44 45 32 45 43 2e 38 42 32 38 36 43 30 30 2d  BDE2EC.8B286C00-
    19. 0120   2d 0d 0a 0d 0a 0d 0a 2e 0d 0a                    -.........
    Исходник:
    Код (Text):
    1. .386
    2.  
    3. .model flat,stdcall
    4. option casemap:none
    5.  
    6.  
    7. WinMain proto :DWORD,:DWORD,:DWORD,:DWORD
    8.  
    9.  
    10.              include E:\masm32\include\windows.inc
    11.              include E:\masm32\include\kernel32.inc
    12.              include E:\masm32\include\user32.inc
    13.              include E:\masm32\include\advapi32.inc
    14.              include E:\masm32\include\gdi32.inc
    15.              include E:\masm32\include\ws2_32.inc
    16.              includelib E:\masm32\lib\kernel32.lib
    17.              includelib E:\masm32\lib\user32.lib
    18.              includelib E:\masm32\lib\advapi32.lib
    19.              includelib E:\masm32\lib\gdi32.lib
    20.              includelib E:\masm32\lib\ws2_32.lib
    21.              include E:\masm32\macros\Strings.mac
    22.  
    23. IN_ADDR struct
    24. s_addr dd ?
    25. IN_ADDR ends
    26.  
    27. SOCKADDR_IN struct
    28. sin_family dw ?
    29. sin_port dw ?
    30. sin_addr IN_ADDR <?>
    31. sin_zero db 8h dup(?)
    32. SOCKADDR_IN ends
    33.  
    34. HOSTENT struct
    35. h_name dd ?
    36. h_aliases dd ?
    37. h_addrtype dw ?
    38. h_length dw ?
    39. h_addr dd ?
    40. HOSTENT ends
    41.  
    42.  
    43. .DATA
    44. ClassName db "SimpleWinClass",0
    45.  
    46. AppName  db "Our First Window",0
    47. OurText  db "Win32 assembly is great and easy!",0
    48.  
    49.  
    50. .DATA?
    51. hInstance HINSTANCE ?
    52. CommandLine LPSTR ?
    53.  
    54.  
    55. .CODE
    56. start:
    57.     invoke GetModuleHandle, NULL
    58.  
    59.     mov    hInstance,eax
    60.     invoke GetCommandLine
    61.     mov CommandLine,eax
    62.     invoke WinMain, hInstance,NULL,CommandLine, SW_SHOWDEFAULT
    63.  
    64.     invoke ExitProcess,eax
    65.  
    66. WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR,
    67. CmdShow:DWORD
    68.  
    69.     LOCAL wc:WNDCLASSEX
    70.     LOCAL msg:MSG
    71.     LOCAL hwnd:HWND
    72.  
    73.     mov   wc.cbSize,SIZEOF WNDCLASSEX
    74.     mov   wc.style, CS_HREDRAW or CS_VREDRAW
    75.     mov   wc.lpfnWndProc, OFFSET WndProc
    76.     mov   wc.cbClsExtra,NULL
    77.     mov   wc.cbWndExtra,NULL
    78.     push  hInst
    79.     pop   wc.hInstance
    80.     mov   wc.hbrBackground,COLOR_WINDOW+1
    81.     mov   wc.lpszMenuName,NULL
    82.     mov   wc.lpszClassName,OFFSET ClassName
    83.     invoke LoadIcon,NULL,IDI_APPLICATION
    84.     mov   wc.hIcon,eax
    85.     mov   wc.hIconSm,eax
    86.     invoke LoadCursor,NULL,IDC_ARROW
    87.     mov   wc.hCursor,eax
    88.     invoke RegisterClassEx, addr wc
    89.  
    90.     invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
    91.            WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
    92.  
    93.            CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
    94.            hInst,NULL
    95.  
    96.     mov   hwnd,eax
    97.     invoke ShowWindow, hwnd,SW_SHOWNORMAL
    98.     invoke UpdateWindow, hwnd
    99.  
    100.  
    101. ;invoke CreateThread,0h,0h,offset Some,0h,0h,offset ThreadId
    102.  
    103.         .WHILE TRUE
    104.  
    105.                invoke GetMessage, ADDR msg,NULL,0,0
    106.                .BREAK .IF (!eax)
    107.                invoke TranslateMessage, ADDR msg
    108.                invoke DispatchMessage, ADDR msg
    109.  
    110.         .ENDW
    111.         mov     eax,msg.wParam
    112.         ret
    113. WinMain endp
    114.  
    115.  
    116. .data?
    117. controls dd 100h dup(?)
    118. wsadata WSADATA <>
    119. .code
    120.  
    121.  
    122.  
    123.  
    124.  
    125.  encodeBase64 proc
    126.         xor     esi,esi ; encodeBase64 by Bumblebee. All rights reserved ;)
    127.         call    over_enc_table
    128.         db      "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    129.         db      "abcdefghijklmnopqrstuvwxyz"
    130.         db      "0123456789+/"
    131.  over_enc_table:
    132.         pop     edi
    133.         push    ebp
    134.         xor     ebp,ebp
    135.  baseLoop:
    136.         movzx   ebx,byte ptr [eax]
    137.         shr     bl,2
    138.         and     bl,00111111b
    139.         mov     bh,byte ptr [edi+ebx]
    140.         mov     byte ptr [edx+esi],bh
    141.         inc     esi
    142.  
    143.         mov     bx,word ptr [eax]
    144.         xchg    bl,bh
    145.         shr     bx,4
    146.         mov     bh,0
    147.         and     bl,00111111b
    148.         mov     bh,byte ptr [edi+ebx]
    149.         mov     byte ptr [edx+esi],bh
    150.         inc     esi
    151.  
    152.         inc     eax
    153.         mov     bx,word ptr [eax]
    154.         xchg    bl,bh
    155.         shr     bx,6
    156.         xor     bh,bh
    157.         and     bl,00111111b
    158.         mov     bh,byte ptr [edi+ebx]
    159.         mov     byte ptr [edx+esi],bh
    160.         inc     esi
    161.  
    162.         inc     eax
    163.         xor     ebx,ebx
    164.         movzx   ebx,byte ptr [eax]
    165.         and     bl,00111111b
    166.         mov     bh,byte ptr [edi+ebx]
    167.         mov     byte ptr [edx+esi],bh
    168.         inc     esi
    169.         inc     eax
    170.  
    171.         inc     ebp
    172.         cmp     ebp,24
    173.         jna     DontAddEndOfLine
    174.  
    175.         xor     ebp,ebp                         ; Добавляем новую линию
    176.         mov     word ptr [edx+esi],0A0Dh
    177.         inc     esi
    178.         inc     esi
    179.         test    al,00h                          ; Оптимизиpовано
    180.         org     $-1
    181.  DontAddEndOfLine:
    182.         inc     ebp
    183.         sub     ecx,3
    184.         or      ecx,ecx
    185.         jne     baseLoop
    186.  
    187.         mov     ecx,esi
    188.         add     edx,esi
    189.         pop     ebp
    190.         ret
    191.  encodeBase64 endp
    192.  
    193.  
    194.  
    195.  
    196.  
    197.  
    198.  
    199.  
    200.  
    201.  
    202.  
    203.  
    204. myconnect PROTO :DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD,:DWORD
    205.  
    206.  
    207. .data
    208. helo_mes db "HELO",0h
    209. mail_from db "MAIL FROM:<",0h
    210. rcpt_mes db "RCPT TO:<",0h
    211. datames db "DATA",0Dh,0Ah,0h
    212. subj_mes db "SUBJECT: ",0h
    213. my_message db "Hello World!!!",0Dh,0Ah,0Dh,0Ah,".",0Dh,0Ah,0h
    214. quit_mes db "QUIT",0Dh,0Ah,0h
    215. .code
    216.  
    217. recvy PROTO :DWORD,:DWORD
    218.  
    219. recvy proc memheap:DWORD,s:DWORD
    220.  
    221. mov eax,memheap
    222. add eax,1000h
    223. push eax
    224. invoke lstrlen,eax
    225. pop edx
    226. add eax,edx
    227. invoke recv,s,eax,100h,0h
    228.  
    229. ret
    230. recvy endp
    231.  
    232.  
    233. clear PROTO :DWORD
    234.  
    235. clear proc memheap:DWORD
    236. mov edi,memheap
    237. mov ecx,200h
    238. xor eax,eax
    239. rep stosb
    240. ret
    241. clear endp
    242.  
    243. myconnect proc hWnd,hMemo,hEdit,hEdit2,hEdit3,hEdit4,hMemo2
    244. LOCAL s:SOCKET
    245. LOCAL memheap:DWORD
    246. LOCAL procheap:DWORD
    247. LOCAL sin:SOCKADDR_IN
    248. LOCAL memory:DWORD
    249.  
    250.  
    251. ;jmp endy
    252.  
    253. invoke GetProcessHeap
    254. mov procheap,eax
    255. invoke HeapAlloc,eax,HEAP_ZERO_MEMORY,4000h
    256. mov memheap,eax
    257.  
    258.  
    259.  
    260. invoke WSAStartup,101h,offset wsadata
    261. invoke socket,AF_INET,SOCK_STREAM,0h
    262. mov s,eax
    263.  
    264. mov eax,memheap
    265. add eax,5h
    266. invoke SendMessage,hEdit,WM_GETTEXT,50h,eax
    267. mov eax,memheap
    268. add eax,5h
    269. invoke gethostbyname,eax
    270. assume eax:ptr HOSTENT
    271. mov eax,[eax].h_addr
    272. assume eax:nothing
    273. mov eax,[eax]
    274. mov eax,[eax]
    275.  
    276.     MOV  sin.sin_addr.s_addr,eax
    277.     MOV  sin.sin_port,1900h
    278.     MOV  sin.sin_family,AF_INET
    279.  
    280.  
    281. invoke connect,s,addr sin,sizeof(sockaddr_in)
    282.  
    283. ;xor eax,eax
    284. .if eax==0h
    285.  
    286. mov eax,memheap
    287. add eax,1000h
    288. invoke recv,s,eax,100h,0h
    289.  
    290. invoke lstrcpy,memheap,offset helo_mes
    291. add eax,sizeof helo_mes-1h
    292. mov byte ptr [eax],20h
    293. inc eax
    294. push eax
    295. invoke SendMessage,hEdit,WM_GETTEXT,50h,eax
    296. pop edx
    297. mov dword ptr [eax][edx],0A0Dh
    298. invoke lstrlen,memheap
    299. invoke send,s,memheap,eax,0h
    300.  
    301. mov eax,memheap
    302. add eax,1000h
    303. invoke recv,s,eax,100h,0h
    304.  
    305. invoke clear,memheap
    306.  
    307. invoke lstrcpy,memheap,offset mail_from
    308. add eax,sizeof mail_from-1h
    309. push eax
    310. invoke SendMessage,hEdit2,WM_GETTEXT,50h,eax
    311. pop edx
    312. mov dword ptr [eax][edx],'>' or 0A0D00h
    313. add eax,3h
    314.  
    315. invoke lstrlen,memheap
    316. invoke send,s,memheap,eax,0h
    317.  
    318.  
    319. invoke recvy,memheap,s
    320. invoke clear,memheap
    321.  
    322. invoke lstrcpy,memheap,offset rcpt_mes
    323. add eax,sizeof rcpt_mes-1h
    324. push eax
    325. invoke SendMessage,hEdit3,WM_GETTEXT,50h,eax
    326. pop edx
    327. mov dword ptr [eax][edx],'>' or 0A0D00h
    328. add eax,3h
    329. invoke lstrlen,memheap
    330. invoke send,s,memheap,eax,0h
    331.  
    332. mov eax,memheap
    333. add eax,1000h
    334. push eax
    335. invoke lstrlen,eax
    336. pop edx
    337. add eax,edx
    338. invoke recv,s,eax,100h,0h
    339.  
    340.  
    341. invoke clear,memheap
    342.  
    343. invoke lstrcpy,memheap,offset datames
    344. mov eax,sizeof datames-1h
    345. invoke send,s,memheap,eax,0h
    346.  
    347.  
    348. invoke recvy,memheap,s
    349. invoke clear,memheap
    350.  
    351.  
    352.  
    353.  
    354. invoke VirtualAlloc,0h,100000h,MEM_COMMIT,PAGE_READWRITE
    355. mov memory,eax
    356. invoke lstrcpy,memory,offset subj_mes
    357. add eax,sizeof subj_mes-1h
    358. push eax
    359. invoke SendMessage,hEdit4,WM_GETTEXT,50h,eax
    360. pop edx
    361. mov word ptr [eax][edx],0A0Dh
    362. add eax,2h
    363. mov word ptr [eax][edx],0A0Dh
    364. add eax,2h
    365. add eax,edx
    366. invoke SendMessage,hMemo2,WM_GETTEXT,400h,eax
    367.  
    368. .data
    369. comment @
    370. MyFile db "MIME-Version: 1.0",0Ah,0Dh
    371. db "Content-Type: multipart/mixed;",0Ah,0Dh
    372. db 'boundary="----=_NextPart_000_0005_01BDE2FC.8B286C00"',0Ah,0Dh
    373. db "X-Priority: 3",0Ah,0Dh
    374. db "X-MSMail-Priority: Normal",0Ah,0Dh
    375. db "X-Unsent: 1",0Ah,0Dh
    376. db "X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3",0Ah,0Dh
    377. db 0Ah,0Dh
    378. db "------=_NextPart_000_0005_01BDE2EC.8B286C00",0Ah,0Dh
    379. db "Content-Type: text/plain; charset=iso-8859-1"
    380. db "Content-Transfer-Encoding: quoted-printable"
    381. db 0Ah,0Dh
    382. db "Put here whatever you want",0Ah,0Dh
    383. db 0Ah,0Dh
    384. db "------=_NextPart_000_0005_01BDE2EC.8B286C00",0Ah,0Dh
    385. db "Content-Type: application/octet-stream; name=filename.exe",0Ah,0Dh
    386. db "Content-Transfer-Encoding: base64",0Ah,0Dh
    387. db 'Content-Disposition: attachment; filename="filename.exe"',0Ah,0Dh
    388. db 0Ah,0Dh
    389. ;db "Here would come BASE64 encoded file.",0Ah,0Dh,0h
    390. @
    391.  
    392. comment @
    393. MyFile db "MIME-Version: 1.0"
    394. db "Content-Type: multipart/mixed;"
    395. db 'boundary="----=_NextPart_000_0005_01BDE2FC.8B286C00"'
    396. db "X-Priority: 3"
    397. db "X-MSMail-Priority: Normal"
    398. db "X-Unsent: 1"
    399. db "X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3110.3"
    400. db "------=_NextPart_000_0005_01BDE2EC.8B286C00"
    401. db "Content-Type: text/plain; charset=iso-8859-1"
    402. db "Content-Transfer-Encoding: quoted-printable"
    403. db "Put here whatever you want"
    404. db "------=_NextPart_000_0005_01BDE2EC.8B286C00"
    405. db "Content-Type: application/octet-stream; name=filename.exe"
    406. db "Content-Transfer-Encoding: base64"
    407. db 'Content-Disposition: attachment; filename="filename.exe"'
    408. db 36h,63h,23h
    409. @
    410.  
    411. comment @
    412. MyFile db 'Content-Type: application/octet-stream; name="file.bin"'
    413. db 'Content-Disposition: attachment; filename="file.bin"'
    414. db "Content-Transfer-Encoding: base64"
    415. db 36h,63h,23h
    416. db 0h
    417. @
    418. [b]  
    419. MyFile db 'Content-Type: application/octet-stream; name="file.bin"',0Dh,0Ah
    420. db 'Content-Disposition: attachment; filename="file.bin"',0Dh,0Ah
    421. db 'Content-Transfer-Encoding: base64',0Dh,0Ah,0h
    422.  
    423.  
    424. coding_data db 36h,63h,23h,88h,57h,22h
    425.  
    426. end_of_File db "------=_NextPart_000_0005_01BDE2EC.8B286C00--",0Dh,0Ah,0h
    427. [/b]
    428. .code
    429.  
    430. invoke lstrlen,memory
    431. mov edx,memory
    432. mov word ptr [eax][edx],0A0Dh
    433. add eax,2h
    434. mov word ptr [eax][edx],0A0Dh
    435. add eax,2h
    436. add eax,memory
    437. invoke lstrcpy,eax,offset MyFile
    438.  
    439.  
    440. invoke lstrlen,memory
    441. mov edx,eax
    442. add edx,memory
    443. mov eax,offset coding_data
    444. mov ecx,sizeof coding_data
    445. call encodeBase64
    446.  
    447.  
    448.  
    449. invoke lstrlen,memory
    450. add eax,memory
    451. invoke lstrcpy,eax,offset end_of_File
    452.  
    453.  
    454.  
    455. invoke lstrlen,memory
    456. mov edx,memory
    457. mov dword ptr [eax][edx],0A0Dh
    458. inc eax
    459. inc eax
    460. mov dword ptr [eax][edx],2E0A0Dh
    461. add eax,3h
    462. mov dword ptr [eax][edx],0A0Dh
    463. inc eax
    464. inc eax
    465.  
    466.  
    467. invoke lstrlen,memory
    468. invoke send,s,memory,eax,0h
    469. invoke VirtualFree,memory,100000h,MEM_DECOMMIT
    470.  
    471.  
    472.  
    473.  
    474.  
    475.  
    476. invoke recvy,memheap,s
    477. invoke clear,memheap
    478.  
    479. invoke lstrcpy,memheap,offset quit_mes
    480. mov eax,sizeof quit_mes-1h
    481. invoke send,s,memheap,eax,0h
    482.  
    483. mov eax,memheap
    484. add eax,1000h
    485. push eax
    486. push eax
    487. invoke lstrlen,eax
    488. pop edx
    489. add eax,edx
    490. invoke recv,s,eax,100h,0h
    491. add edx,eax
    492. pop eax
    493. invoke SendMessage,hMemo,WM_SETTEXT,edx,eax
    494.  
    495. .endif
    496.  
    497.  
    498.  
    499. invoke closesocket,s
    500. invoke WSACleanup
    501.  
    502. invoke HeapFree,procheap,0h,memheap
    503.  
    504.  
    505.  
    506.  
    507.  
    508.  
    509. endy:
    510.  
    511.  
    512. ret
    513. myconnect endp
    514.  
    515.  
    516. WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
    517. CONTSTR STRUCT
    518. button dd ?
    519. edit dd ?
    520. edit2 dd ?
    521. edit3 dd ?
    522. edit4 dd ?
    523. memo dd ?
    524. memo2 dd ?
    525. CONTSTR ENDS
    526.  
    527. mov esi,offset controls
    528. assume esi:ptr CONTSTR
    529. .if uMsg==WM_CREATE
    530.  
    531. invoke CreateWindowEx,0h,$CTA0("BUTTON"),$CTA0("Send"),WS_VISIBLE or WS_CHILD or BS_DEFPUSHBUTTON,160,20,80,20,hWnd,0,hInstance,0
    532. mov [esi].button,eax
    533.  
    534. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("www.yandex.ru"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,270,50,200,20,hWnd,0,hInstance,0
    535.  
    536. mov [esi].edit,eax
    537.  
    538. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("xxx@rambler.ru"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,490,50,200,20,hWnd,0,hInstance,0
    539. mov [esi].edit2,eax
    540.  
    541. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("xxx@rambler.ru"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,490,80,200,20,hWnd,0,hInstance,0
    542. mov [esi].edit3,eax
    543.  
    544. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("Hello"),WS_VISIBLE or WS_CHILD or WS_BORDER or ES_AUTOHSCROLL,490,110,200,20,hWnd,0,hInstance,0
    545. mov [esi].edit4,eax
    546.  
    547. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0(""),WS_VISIBLE or WS_CHILD or WS_BORDER or WS_VSCROLL or ES_MULTILINE,10,50,250,250,hWnd,0,hInstance,0
    548. mov [esi].memo,eax
    549.  
    550. invoke CreateWindowEx,0h,$CTA0("EDIT"),$CTA0("Hello "),WS_VISIBLE or WS_CHILD or WS_BORDER or WS_VSCROLL or ES_MULTILINE,270,80,200,220,hWnd,0,hInstance,0
    551. mov [esi].memo2,eax
    552.  
    553. ;invoke SendMessage,hWnd,WM_PAINT,0h,0h
    554. .endif
    555.  
    556.  
    557. .if uMsg==WM_COMMAND
    558. mov eax,dword ptr [esi].button
    559.  .if lParam==eax
    560.  
    561. invoke myconnect,hWnd,[esi].memo,[esi].edit,[esi].edit2,[esi].edit3,[esi].edit4,[esi].memo2
    562.  
    563.  
    564.  .endif
    565.  
    566. .endif
    567.  
    568.  
    569.     .if uMsg==WM_PAINT
    570.  
    571.     .endif
    572.  
    573.  
    574.  
    575. assume esi:nothing
    576.     .if uMsg==WM_DESTROY
    577.         invoke PostQuitMessage,NULL
    578.         .else
    579.        
    580.     invoke DefWindowProc,hWnd,uMsg,wParam,lParam
    581.  ;   xor   eax, eax
    582.     .endif
    583.  
    584.  
    585.  
    586.  
    587.     ret
    588. WndProc endp
    589.  
    590.  
    591. end start
     
  9. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Ethereal:

    No. Time Source Destination Protocol Info
    22 26.180436 192.168.23.128 77.88.21.11 SMTP Message Body

    Frame 22 (298 bytes on wire, 298 bytes captured)
    Ethernet II, Src: Vmware_d9:c1:6f (00:0c:29:d9:c1:6f), Dst: Vmware_ed:54:a0 (00:50:56:ed:54:a0)
    Destination: Vmware_ed:54:a0 (00:50:56:ed:54:a0)
    Address: Vmware_ed:54:a0 (00:50:56:ed:54:a0)
    .... ...0 .... .... .... .... = Multicast: This is a UNICAST frame
    .... ..0. .... .... .... .... = Locally Administrated Address: This is a FACTORY DEFAULT address
    Source: Vmware_d9:c1:6f (00:0c:29:d9:c1:6f)
    Address: Vmware_d9:c1:6f (00:0c:29:d9:c1:6f)
    .... ...0 .... .... .... .... = Multicast: This is a UNICAST frame
    .... ..0. .... .... .... .... = Locally Administrated Address: This is a FACTORY DEFAULT address
    Type: IP (0x0800)
    Internet Protocol, Src: 192.168.23.128 (192.168.23.128), Dst: 77.88.21.11 (77.88.21.11)
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
    Total Length: 284
    Identification: 0x05c1 (1473)
    Flags: 0x04 (Don't Fragment)
    Fragment offset: 0
    Time to live: 128
    Protocol: TCP (0x06)
    Header checksum: 0xb98f [correct]
    Source: 192.168.23.128 (192.168.23.128)
    Destination: 77.88.21.11 (77.88.21.11)
    Transmission Control Protocol, Src Port: 1150 (1150), Dst Port: smtp (25), Seq: 87, Ack: 295, Len: 244
    Simple Mail Transfer Protocol
    Message: SUBJECT: Hello\r\n
    Message: \r\n
    Message: Hello 876\345876\345\r\n
    Message: \r\n
    Message: Content-Type: application/octet-stream; name="file.bin"\r\n
    Message: Content-Disposition: attachment; filename="file.bin"\r\n
    Message: Content-Transfer-Encoding: base64\r\n
    Message: NmMjiFci------=_NextPart_000_0005_01BDE2EC.8B286C00--\r\n
    Message: \r\n
    Message: \r\n
    Message: .\r\n
     
  10. Proteus

    Proteus Member

    Публикаций:
    0
    Регистрация:
    19 июн 2004
    Сообщения:
    344
    Адрес:
    Russia
    Ты всё таки что-то непонятное делаешь. Так выглядит мини письмо. Указано что формат текстовой (хотя можно было и не указывать, а просто оставить пустую строку в начале):
    Код (Text):
    1. Content-type: text/plain;
    2.  
    3. Hello world!
    Есть заголовок в котором указан тип и содержимое. Заголовок от содержимого отделяют пустой строкой. Более сложны вариант, текст и вложенный архив:
    Код (Text):
    1. Content-type: multipart/mixed; boundary="simple boundary"
    2.  
    3. --simple boundary
    4. Content-Type: text/plain;
    5.  
    6. Hello !
    7.  
    8. --simple boundary
    9. Content-Type: application/x-zip-compressed;name="TT25.zip"
    10. Content-Disposition: attachment; filename="TT25.zip"
    11. Content-Transfer-Encoding: base64
    12.  
    13. --simple boundary--
    Указан формат multipart/mixed, это значит что письмо имеет множество секций, указано чем разделяются секции. Обрати внимание на то как они разделяются и как закрывается последняя секция.

    multipart/mixed - состоит из секций, которые используются одновременно.
    multipart/alternative - для просмотра выбирается одна из секций, с более удобным форматом.

    Более сложный вариант когда у письма есть вложение, и текст ввиде двух вариантов (txt,html), тогда оно имеет древовидный формат:
    Код (Text):
    1. multipart/mixed
    2.     multipart/alternative
    3.        text/plain
    4.        text/html
    5.     application/x-zip-compressed
    т.е. указано что письмо имеет формат multipart/mixed, внутри которого есть архив и вложенная секций с текстом (multipart/alternative). Т.е. почтовик покажет тебе архив и один текст, который выберет по своему желанию, либо html либо txt.
    Секции внутри multipart/mixed, multipart/alternative надо отделять друг от друга и закрывать последнюю (разделители как ты понял должны быть разные).
     
  11. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Что-то не получается...
    В письме вместо вложения получается вот такой текст:
    Код (Text):
    1. Content-type: multipart/mixed; boundary="simple boundary"
    2.  
    3. --simple boundary
    4. Content-Type: text/plain;
    5.  
    6. Hello !
    7.  
    8. --simple boundary
    9. Content-Type: application/x-zip-compressed;name="TT25.zip"
    10. Content-Disposition: attachment; filename="TT25.zip"
    11. Content-Transfer-Encoding: base64
    12.  
    13. --simple boundary--
    Вложение интерпретируется как текст почему-то...
    Тут я типа файл TT25.zip нулевого размере передаю... Можно ведь так?

    Ethereal:
    Код (Text):
    1. No.     Time        Source                Destination           Protocol Info
    2.      24 7.247498    192.168.23.128        87.250.251.11         SMTP     Message Body
    3.  
    4. Frame 24 (391 bytes on wire, 391 bytes captured)
    5. Ethernet II, Src: Vmware_d9:c1:6f (00:0c:29:d9:c1:6f), Dst: Vmware_ed:54:a0 (00:50:56:ed:54:a0)
    6. Internet Protocol, Src: 192.168.23.128 (192.168.23.128), Dst: 87.250.251.11 (87.250.251.11)
    7. Transmission Control Protocol, Src Port: 1171 (1171), Dst Port: smtp (25), Seq: 87, Ack: 296, Len: 337
    8. Simple Mail Transfer Protocol
    9.     Message: SUBJECT: Hello888\r\n
    10.     Message: \r\n
    11.     Message: Content-type: multipart/mixed; boundary="simple boundary"\r\n
    12.     Message: \r\n
    13.     Message: --simple boundary\r\n
    14.     Message: Content-Type: text/plain;\r\n
    15.     Message: \r\n
    16.     Message: Hello !\r\n
    17.     Message: \r\n
    18.     Message: --simple boundary\r\n
    19.     Message: Content-Type: application/x-zip-compressed;name="TT25.zip"\r\n
    20.     Message: Content-Disposition: attachment; filename="TT25.zip"\r\n
    21.     Message: Content-Transfer-Encoding: base64\r\n
    22.     Message: \r\n
    23.     Message: --simple boundary--\r\n
    24.     Message: \r\n
    25.     Message: .\r\n
     
  12. grinay

    grinay New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2007
    Сообщения:
    19
    Header db 'Message-ID: <%s>',CrLf
    db 'From: <%s>',CrLf
    db 'To: <%s>',CrLf
    db 'Subject: Text',CrLf
    db 'MIME-Version: 1.0',CrLf
    db 'Content-Type: application/octet-stream; name="file.txt"',CrLf
    db 'Content-Disposition: attachment; filename="file.txt"',CrLf
    db 'Content-Transfer-Encoding: base64',CrLf
    db 'TextInBase64',CrLf,0
     
  13. Meatcoins

    Meatcoins New Member

    Публикаций:
    0
    Регистрация:
    19 сен 2007
    Сообщения:
    178
    Спасибо!
    Это получилось!
    + Нужно, чтобы данные были выровнены на 3 байта!
    Код (Text):
    1.     Message: SUBJECT: Hello888\r\n
    2.     Message: MIME-Version: 1.0\r\n
    3.     Message: Content-Type: application/octet-stream; name="file.txt"\r\n
    4.     Message: Content-Disposition: attachment; filename="file.txt"\r\n
    5.     Message: Content-Transfer-Encoding: base64\r\n
    6.     Message: SGFwcHkgTmV3IFllYXIhISEhICAg\r\n
    7.     Message: \r\n
    8.     Message: .\r\n