Mail z załącznikiem...

Milposzyk

Użytkownik
Dołączył
Październik 30, 2005
Posty
6
Witam!!
Jak wysłać mail z załącznikiem w Delphi?? Czy trzeba używać specjalnych komponentów??
Z góry dzieki:D
 

rafal

Były Moderator
Dołączył
Marzec 30, 2005
Posty
392
najlatwiej zrobic to na INdy , ale skoro niechcesz przy pomocy komponentow to mozna uzyc do tego MAPI, gdzies tam jest kodzik na 4programmers.net
 

Milposzyk

Użytkownik
Dołączył
Październik 30, 2005
Posty
6
Ok jest znalazłem bardzo dziekuje...
Czy da sie jakos zrobic zeby Outlook sie nie otwieral?? Bo jak np: to by mailo byc do keyloggera to odrazu sie kapna??I jak jeszcze zrobic zeby sie wysylalo co np: minute??
kod:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Mapi, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
MAPIFileDesc : TMAPIFileDesc;
MAPIMessage : TMAPIMessage;
MAPIRecipDesc : TMapiRecipDesc;
hMAPIDLL : THandle;
pfnMAPISendMail : TFNMAPISendMail;
begin
hMAPIDLL := LoadLibrary('MAPI32.DLL');
if hMAPIDLL=0 then
begin
//tutaj kod obsługi błędu braku funkcji lub pliku
end;

//pobranie adresu funkcji
@pfnMAPISendMail := GetProcAddress(hMAPIDLL,'MAPISendMail');
if @pfnMAPISendMail=nil then
begin
FreeLibrary(hMAPIDLL);
end;

//przygotowanie opisu adresata
FillChar(MAPIRecipDesc,SizeOf(TMAPIRecipDesc),0);
with MAPIRecipDesc do
begin
ulRecipClass := MAPI_TO;
lpszName := 'Ziem';
lpszAddress := '[email protected]';
end;

//przygotowanie opisu załącznika
FillChar(MAPIFileDesc,SizeOf(TMAPIFileDesc),0);
with MAPIFileDesc do
begin
nPosition := Cardinal(-1);
lpszPathName := 'C:Wizytówka gim.doc';
lpszFileName := 'Wizytówka gim.doc';
end;

//przygotowanie rekordu wiadomości
FillChar(MAPIMessage,SizeOf(TMAPIMessage),0);
with MAPIMessage do
begin
lpszSubject := 'Temat listu';
lpszNoteText := 'Treść listu';
nRecipCount := 1;
lpRecips := @MAPIRecipDesc;
nFileCount := 1;
lpFiles := @MAPIFileDesc;
end;

//wysłanie
if
pfnMAPISendMail(0,Handle{0 lub twoje HWND},MAPIMessage,MAPI_DIALOG,0)<>SUCCESS_SUCCESS
then
begin
FreeLibrary(hMAPIDLL);
//błąd z wysłaniem
end;
//zwolnienie zasobów
FreeLibrary(hMAPIDLL);
end;


end.[/b]
 

rafal

Były Moderator
Dołączył
Marzec 30, 2005
Posty
392
akurat nie o ten kod mi chodzilo , ale to w sumie wszystko jedno, bo ten problem mozna bez problemu minac, ale Outlook i tak wyswietli komunikat "ze jakis program cche wyslac wiadomosc i cyz potwierdzasz chec wyslania" czy jakos tak.... a tego to juz nie wiem jak sie pozbyc ;-)
Co do wysylania co minute to poprostu dajesz ta procedure do Timera i ustawiasz interval na 60000.
 

fl3a

Użytkownik
Dołączył
Marzec 12, 2005
Posty
538
Proponuje zrobic to na Socketach a nie mapi. Wbrew pozorom nie jest to trudniejsze! Tu znajdziesz maly opis + zrodelko: smtp Tu jest opis wysylania meila za pomoca Socketow Windowsa: socket - Wiekszosc zrodel jest w Asmie ale przeszukujac forum pod kontem smtp + socket + client mozesz znalezc wiele cennych informacji.
 

Milposzyk

Użytkownik
Dołączył
Październik 30, 2005
Posty
6
Ok dziekuje wam:D
Probuje wlasnie robic keyloggera, udalo mi sie zrobic zapis do memo, a potem do *.txt:F
I wlasnie o to mi chodzi zeby cicho wyslac ten plik, jakiego kodu uzyc?? Jak zsynchronizowac to zeby zaraz po zapisie do pliku wysylal na maila??
 
Do góry Bottom