Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Flags für MAPI Sendmail Aufruf (https://www.delphipraxis.net/55450-flags-fuer-mapi-sendmail-aufruf.html)

runger 21. Okt 2005 06:13


Flags für MAPI Sendmail Aufruf
 
Hallo,

wir wollen über eine MAPI Funktion E-mails versenden.
Unser E-mail Client ist Lotus Notes.

Delphi-Quellcode:
function sendMail( const TargetName, TargetAddr,
                         SenderName, SenderAddr,
                         MsgSubject, MsgContent,
                         Attachment : String;
                         PreviewMsg : Boolean = TRUE ) : Integer;
var
  msg      : TMapiMessage;   // Pointer to the message itself
  mrdSender,                  // Who's sending it?
  mrdTarget : TMapiRecipDesc; // Who's going to get it?
  mfdAttach : TMapiFileDesc;  // The attached file.
  liFlags  : Longint;        // Flags for MAPI.
  strError : String;         // Holds MAPI error results;
begin
 result := 0;
 liFlags := 0;
 fillChar( msg, sizeOf( msg ), 0 );
 with msg do
 begin

//   if TargetAddr = '' then
//      raise tMailFileException.createFmt( ERROR,
//         [ 'Target email address not specified' ] )
   begin
      if TargetName = '' then
         mrdTarget.lpszName := pChar( TargetAddr )
      else
         mrdTarget.lpszName := pChar( TargetName );
      mrdTarget.ulRecipClass := MAPI_TO;
      mrdTarget.lpszAddress := pChar( TargetAddr );
      mrdTarget.ulReserved := 0;
      mrdTarget.ulEIDSize := 0;
      mrdTarget.lpEntryID := NIL;
      nRecipCount := 1;
      lpRecips := @mrdTarget;

   end;

//   if SenderAddr = '' then
//      raise tMailFileException.createFmt( ERROR,
//         [ 'Sender email address not specified' ] )
   begin
      if SenderName = '' then
         mrdSender.lpszName := pChar( SenderAddr )
      else
         mrdSender.lpszName := pChar( SenderName );
      mrdSender.ulRecipClass := MAPI_ORIG;
      mrdSender.lpszAddress := pChar( 'SMTP:' + SenderAddr );
      mrdSender.ulReserved := 0;
      mrdSender.ulEIDSize := 0;
      mrdSender.lpEntryID := NIL;
      lpOriginator := @mrdSender;
   end;

   if MsgSubject = '' then
      lpszSubject := ''
   else
      lpszSubject := pChar( MsgSubject );

//   if ( MsgContent = '' ) AND ( Attachment = '' ) then
//      raise tMailFileException.createFmt( ERROR,
//         [ 'Tried to send an empty message (no content or attachment)' ] )
   begin
      if MsgContent = '' then
         lpszNoteText := 'Please see the attached file.'
      else
         lpszNoteText := pChar( MsgContent );

      if Attachment = '' then begin
         nFileCount := 0;
         lpFiles := NIL;
      end else begin
         fillChar( mfdAttach, sizeOf( mfdAttach ), 0 );
         mfdAttach.nPosition := cardinal( $FFFFFFFF );
         mfdAttach.lpszPathName := pChar( Attachment );
         nFileCount := 1;
         lpFiles := @mfdAttach;
      end;
   end; // with

   if previewMsg then liFlags := MAPI_DIALOG;
   result := mapiSendMail( 0, application.Handle, msg, liFlags, 0 );


{   if result <> 0 then
      raise tMailFileException.createFmt( ERROR,
         [ 'MAPI triggered an error ('
           + getMAPIError( result ) + ')' ] );  }
  end;

end;
Das Ganze funktioniert insoweit, dass E-mails in Notes erzeugt werden, es öffnet sich das normale Mew mail Fenster und ich sehe meine generierte Mail.
Wie krieg ich notes dazu, dass es diese mail auch sendet.
Offensichtlich hat es irgendetwas mit liflags und MAPI_DIALOG zu tun.
Mapi_dialog sthet auf 8, das heisst: trage E-mail ein.
Gefunden hab ich noch die 4 das bedeudet sende E-Mail. Funktioniert aber nicht.
Kann mir jemand helfen?

Die Fehlerabfragen sind auskommentiert.

Rainer

marabu 21. Okt 2005 07:27

Re: Flags für MAPI Sendmail Aufruf
 
Hallo Rainer,

es gibt laut PSDK nur drei zulässige Flags für MapiSendMail(), $4 gehört nicht dazu. Rufst du deine Funktion eventuell immer mit PreviewMsg = TRUE auf? Sobald die Flags MAPI_DIALOG enthalten, soll die Mail durch den Benutzer verschickt werden. Ansonsten gibt es noch den Fall, dass kein gültiger Empfänger angegeben ist - auch dann erfolgt kein automatischer Versand.

Grüße vom marabu

runger 21. Okt 2005 09:00

Re: Flags für MAPI Sendmail Aufruf
 
Hall marabu,

sorry aber das Ganze funktioniert immer noch nicht. Notes weigert sich das Mail zu senden, obwohl der Rückgabewerd der Funktion 0 ist, die Mail also gesendet sein müsste. msgpreview steht auf false.

Rainer

Union 21. Okt 2005 09:09

Re: Flags für MAPI Sendmail Aufruf
 
Zitat:

Zitat von runger
Notes weigert sich das Mail zu senden
Rainer

Hallo runger,

wie wäre es mit MapiLogon, damit Du ein Sessionhandle erhältst? Du verwendest bei mapiSendMail 0 als Sessionhandle...

jim_raynor 21. Okt 2005 09:29

Re: Flags für MAPI Sendmail Aufruf
 
Hatte einen Beitrag irgendwo gelesen, dass Notes den automatischen Versand überhaupt nicht unterstützt. Schon mal an diese Möglichkeit gedacht/recheriert?

runger 21. Okt 2005 10:23

Re: Flags für MAPI Sendmail Aufruf
 
Hallo,

wenn du mir jetzt noch sagst wie man mapilogon benutzt wäre ich glücklich.

Rainer

runger 21. Okt 2005 10:27

Re: Flags für MAPI Sendmail Aufruf
 
Hallo,

ich habe verschiedene Beschreibungen gelesen, dass die automatische Weiterleitung aus Word und Excel unterstützt wird. Ich geh mal davon aus, dass das mit MAPI auch geht.
Ausserdem gibts in Notes eine installierbare MAPI Schnittstelle.

Rainer

Union 21. Okt 2005 10:32

Re: Flags für MAPI Sendmail Aufruf
 
Zitat:

Zitat von runger
Hallo,

wenn du mir jetzt noch sagst wie man mapilogon benutzt wäre ich glücklich.

Rainer

Delphi-Quellcode:
var
   MAPI_Session : Cardinal;
// Anmelden
dwRet := MapiLogon(Handle,
    PChar(''),
    PChar(''),
    MAPI_LOGON_UI or MAPI_NEW_SESSION,
    0, @MAPI_Session);
// Senden
MapiSendMail(MAPI_Session, Handle,
      MapiMessage, MAPI_DIALOG, 0);
// Abmelden
MapiLogOff(MAPI_Session, Handle, 0, 0);

runger 21. Okt 2005 10:53

Re: Flags für MAPI Sendmail Aufruf
 
Hallo,

funktioniert nicht. Notes öffnet das New mail Fenster, trägt alles ein, dann ist schluss.

Rainer

Union 21. Okt 2005 10:55

Re: Flags für MAPI Sendmail Aufruf
 
Was heisst "Schluss"? Hängt sich das Mailfenster auf oder was?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 Uhr.
Seite 1 von 2  1 2      

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