Avatar billede erve Nybegynder
05. december 2005 - 09:55 Der er 14 kommentarer og
1 løsning

Fejl i MapiSendMail med Outlok 2003 og Windows XP SP2

Vi vedligeholder en gammel Delphi applikation, som åbner en mail via et kald til MAPI metoden MapiSendMail.
Dette har fungeret fint i flere år, men i kombinationen Windows XP og Outlook 2003, fejler det.
Når man åbner egeneskaber i Til feltet ser det ud som om feltet Email-type er blevet overskrevet med
modtageradressen.
Hvis vi anvender f.eks Notes som Emailklient virker det fint.
Nogen der har været ude for noget lign. eller har et hint?
Mvh Erik
Avatar billede stone Forsker
05. december 2005 - 13:20 #1
jeg bruger selv denne procedure som virker fint i xp sp2....


procedure MapiSendMail(const Recipient, Subject, Body, AttachedFile:
string);
var
  MapiMessage: TMapiMessage;
  lpRecipient: TMapiRecipDesc;
  FileAttach: TMapiFileDesc;
  SM: TFNMapiSendMail;
  MAPIModule: HModule;
  Err: integer;
begin
  FillChar(MapiMessage, SizeOf(MapiMessage), 0);
  if (Subject <> '') then
    MapiMessage.lpszSubject := PChar(Subject);

  if (Body <> '') then
    MapiMessage.lpszNoteText := PChar(Body);

  if (Recipient <> '') then
  begin
    FillChar(lpRecipient, SizeOf(lpRecipient), 0);
    lpRecipient.ulRecipClass := MAPI_TO;
    lpRecipient.lpszName := PChar(Recipient);
    lpRecipient.lpszAddress := PChar(Recipient);
    MapiMessage.nRecipCount := 1;
    MapiMessage.lpRecips := @lpRecipient;
  end;

  if AttachedFile <> '' then
  begin
    MapiMessage.nFileCount := 1;
    FillChar(FileAttach, SizeOf(FileAttach), 0);
    FileAttach.nPosition := Cardinal($FFFFFFFF);
    FileAttach.lpszPathName := PChar(AttachedFile);
    MapiMessage.lpFiles := @FileAttach;
  end;

  MAPIModule := LoadLibrary(PChar(MAPIDLL));
  try
    if MAPIModule = 0 then
      raise Exception.Create('MAPI understøttes ikke i dette system');
    @SM := GetProcAddress(MAPIModule, 'MAPISendMail');
    if @SM = nil then
      raise Exception.Create('MAPISendmail ProcAddress not found');
    Err := SM(0, Application.Handle, MapiMessage, MAPI_DIALOG or
MAPI_LOGON_UI, 0);
    if Err <> 0 then
      raise Exception.Create('MAPI fejl ved forsendelse af post (' + IntToStr(Err) +
')');
  finally
    FreeLibrary(MAPIModule);
  end;
end;

//kald
var
i : integer;
str : string;
attfiles : string;
begin
attfiles := '';
begin
for i := 0 to Dbrichedit1.Lines.Count  do
str:= str + #13#10+(Dbrichedit1.Lines[i]);
end;

MapiSendMail(Edit1.Text,edit2.Text,str,attfiles);
Avatar billede erve Nybegynder
05. december 2005 - 14:56 #2
Jeg tror vi har hugget koden samme sted, for det er præcis det samme jeg gør.
Virker dit eksempel virkelig med Outlook 2003 og Windows XP SP2?
Avatar billede stone Forsker
05. december 2005 - 18:08 #3
ja uden problemer...
Avatar billede erve Nybegynder
06. december 2005 - 10:50 #4
Hvilken Delphi version bruger du?
Avatar billede erve Nybegynder
06. december 2005 - 11:16 #5
Hej Stone
Nu har jeg prøvet din kode ordret, og jeg får stadig fejlen. Kunne du evt ovartales til at prøve www.gej.dk/erikv/project1.zip.
Jeg får stadig fejlen, som består i at når mailen er create'd i Outlook (ikke express!), og man vælger properties i TO-feltet, er Email-type udfyldt med receivername (uppercase)
Avatar billede stone Forsker
06. december 2005 - 13:15 #6
kigger på det i aften.....
/stone
Avatar billede stone Forsker
06. december 2005 - 13:57 #7
kiggede på den alligevel - kunne ikke vente ssss

min version er d5 Interprise - d5 pro compiler man dit eksempel kører det fint men hvis man fortryder mailen får man en Mapi fejl(1) koden vi begge bruger tager ikke hensyn til hvis mailen fortrydes...hmmm hmmm det er ikke godt.
Avatar billede erve Nybegynder
06. december 2005 - 15:15 #8
Hvad står der i Email-TYpe hvis du viser properties via feltet TO..?
Avatar billede stone Forsker
06. december 2005 - 17:53 #9
der står....erv@dk.ibm.com
Avatar billede erve Nybegynder
07. december 2005 - 12:40 #10
jeps. Og det er fejlen. Der burde stå SMTP
Avatar billede erve Nybegynder
12. december 2005 - 13:10 #11
Det der undrer mig at du kan sende, selvom der er fejl i emailtypen. Kan du godt det, og når mail'en frem?
Avatar billede stone Forsker
12. december 2005 - 14:54 #12
den kan godt sende men mailen bliver ikke modtaget.. det der undre mig er at din version ikke virker da vi kører samme outlook og xp, min mail del er en del af et større program, som først zipper en database som backup og så smider den i outlook.
Avatar billede erve Nybegynder
12. december 2005 - 16:18 #13
Men hvis din mail ikke bliver modtaget - så virker din udgave vel heller ikke?
Avatar billede stone Forsker
12. december 2005 - 16:45 #14
det er dit eksempel jeg refererede til....
Avatar billede erve Nybegynder
04. september 2006 - 14:12 #15
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester