Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Timeoutzeit für Mapi-Mail verlängern (D5 Pro) (https://www.delphipraxis.net/103477-timeoutzeit-fuer-mapi-mail-verlaengern-d5-pro.html)

little_budda 16. Nov 2007 10:48


Timeoutzeit für Mapi-Mail verlängern (D5 Pro)
 
Hallo,

ich verwende folgenden Code unter Delphi 5 Pro um E-Mails zu verschicken.

Klappt normalerweise auch richtig klasse.
Nur auf einem recht langsamen PC schafft der Rechner es nicht den E-Mail-Client zu öffnen
um die Mail zu verschicken befor die SendMail-Funktion in timeout läuft.
In einem von 10 Fällen "friert" meine Anwendung auch beim verschicken der Mail ein.

Hier der Code:
Delphi-Quellcode:
function SendFileMail(const FileName: TStrArray; const Subject, BodyText, RecipAdress, CopyConAdress: string): string;
var
  mMessage : TMapiMessage;
  mlpFiles : array of TMapiFileDesc;
  mRecips : array of TMapiRecipDesc;
  ix : integer;
begin
  SetLength(mRecips, 2);
  with mRecips[0] do
    begin
      ulRecipClass := MAPI_TO;
      lpszName    := PChar(RecipAdress);
      lpszAddress := PChar(RecipAdress);
      ulEIDSize   := 0;
      lpEntryID   := nil;
    end;
  with mRecips[1] do
    begin
      ulRecipClass := MAPI_CC;
      lpszName    := PChar(CopyConAdress);
      lpszAddress := PChar(CopyConAdress);
      ulEIDSize   := 0;
      lpEntryID   := nil;
    end;

  SetLength(mlpFiles, Length(FileName));

  for ix := 0 to High(mlpFiles) do
    begin
      with mlpFiles[ix] do
        begin
          flFlags     := 0;
          nPosition   := Cardinal(-1);
          // nPosition   := 0;
          lpszPathName := PChar(FileName[ix]);
          lpszFileName := nil;
          lpFileType  := nil;
        end;
    end;

  with mMessage do
    begin
      lpszSubject       := PChar(Subject);
      lpszNoteText      := PChar(BodyText);
      lpszMessageType   := nil;
      lpszDateReceived  := nil;
      lpszConversationID := nil;
      flFlags           := 0;
      lpOriginator      := nil;
      nRecipCount       := 2;
      lpRecips          := @mRecips[0];

      nFileCount := Length(FileName);

      if (nFileCount > 0)
        then lpFiles := @mlpFiles[0]
        else lpFiles := nil;

      // nFileCount        := 1;
      // lpFiles           := @mlpFiles;
    end;

  case MapiSendMail(0, 0, mMessage, MAPI_LOGON_UI or MAPI_NEW_SESSION, 0) of
    MAPI_E_AMBIGUOUS_RECIPIENT:
      Result := 'A recipient matched more than one of the recipient descriptor structures and MAPI_DIALOG was not set!';
    MAPI_E_ATTACHMENT_NOT_FOUND:
      Result := 'The specified attachment was not found!';
    MAPI_E_ATTACHMENT_OPEN_FAILURE:
      Result := 'The specified attachment could not be open!';
    MAPI_E_BAD_RECIPTYPE:
      Result := 'The type of a recipient was not MAPI_TO, MAPI_CC, or MAPI_BCC!';
    MAPI_E_FAILURE:
      Result := 'One or more unspecified errors occurred!';
    MAPI_E_INSUFFICIENT_MEMORY:
      Result := 'There was insufficient memory to proceed!';
    MAPI_E_LOGIN_FAILURE:
      Result := 'There was no default logon, and the user failed to log on successfully when the logon dialog box was displayed!';
    MAPI_E_TEXT_TOO_LARGE:
      Result := 'The text in the message was too large to sent!';
    MAPI_E_TOO_MANY_FILES:
      Result := 'There were too many file attachments!';
    MAPI_E_TOO_MANY_RECIPIENTS:
      Result := 'There were too many recipients!';
    MAPI_E_UNKNOWN_RECIPIENT:
      Result := 'A recipient did not appear in the address list!';
    MAPI_E_USER_ABORT:
      Result := 'The user canceled one of the dialog boxes!';
  end;
end;
Hat jemand eine Idee für mich wie ich die Timeout-Zeit für die SendMail-Funktion setzen kann
oder wie ich mein "einfrieren" behebe?

:gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz