Specyficzne wysyłanie poczty z Delphi?

0

Witajcie.
Przejżałem forum i FAQ i nie znalazłem odpowiedzi na takie szczegółowe pytanie więc pytam : mam w pracy sieć LAN i pocztę e-mail opartą na serwerze Microsoft Exchange Server (klient poczty Microsoft Outlook). W jaki sposób można wysłać z aplikacji napisanej w Delphi pocztę e-mail z załącznikiem ale w taki sposób aby nie otwierało się okno z nową wiadomością wymagające naciśnięcia przycisku "Wyślij" tylko żeby poszło automatycznie (i dobrze by było z potwierdzeniem). Może ktoś spotkał się z takim

problemem..Z góry dzięki za odpowiedź...robiw

0

no to napisz prosta aplikacje na pdst demo z INDY... potem podawaj jako smtp serwer w pracy i juz
te komponenty przeciez maja obsluzone wszystkie zdarzenia

i na dobra sprawe wysle ci maila nawet jak kichniesz :)

0

Hey! Sorki że się wtrące, ale mnie nutruje bardzo podobne pytanko, tylko że odpowiedź wolałbym w API :] Tzn, jak wysłać e-mail'a (np. za pomocą MAPI), żeby nie otwierało się okno Outlook'a "czy chcesz wysłać..."?? :P Pozdrawiam, KiteK

0

Witam wszystkich na forum

Jak chcesz MAPI to masz tu kod:

uses MAPI;
procedure WyslijList;
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 := 'Adresat';
      lpszAddress := '[email protected]';
    end;

  //przygotowanie opisu załącznika
  FillChar(MAPIFileDesc,SizeOf(TMAPIFileDesc),0);
  with MAPIFileDesc do
    begin
     nPosition := Cardinal(-1);
     lpszPathName := 'C:\Windows\Pulpit\list.doc';
     lpszFileName := 'list.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;

Pozdrawiam Grupa Noribo Częstochowa [cya]

0

Cześć! Dzięki bardzo za odpowiedź. Na moim kompie przy wywołaniu tej procki odpala się to gów... głupie okno Outlook'a :(. Próbowałem już studiować kody komponentów Indy, ale tam chyba każdy komponent jest z innymi powiązany i do niczego nie doszedłem :(. Czy są jakieś inne propozycje na kody?? ;P Z góry dzięki i pozdrawiam, KiteK.

0

Witam wszystkich na forum

Jak chcesz MAPI to masz tu kod:


uses MAPI;
procedure WyslijList;
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 := 'Adresat';
lpszAddress := '[email protected]';
end;

//przygotowanie opisu załącznika
FillChar(MAPIFileDesc,SizeOf(TMAPIFileDesc),0);
with MAPIFileDesc do
begin
nPosition := Cardinal(-1);
lpszPathName := 'C:\Windows\Pulpit\list.doc';
lpszFileName := 'list.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;


> 
> Pozdrawiam Grupa Noribo Częstochowa  [cya]

Witaj.
Niestety u mnie nie działa : błąd wysyłania! Co należy wpisać w miejsce: Handle{0 lub twoje HWND} bo 0 to nie jest chyba poprawny parametr; może dlatego nie działa...robiw

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0