Delphi-PRAXiS

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?

runger 21. Okt 2005 11:03

Re: Flags für MAPI Sendmail Aufruf
 
Hallo,

wie weiter oben schon beschrieben, die Mail wird in ein New Mail Fenster geschrieben aber nicht gesendet. Das kann ich nur händisch machen.
Ansonsten funktioniert alles normal.
Ich muss Notes dazu bringen, dass es das Mail auch noch sendet.

Rainer

Union 21. Okt 2005 11:20

Re: Flags für MAPI Sendmail Aufruf
 
Wenn automatisch gesendet werden soll, dann darf das Flag MAP_DIALOG nicht gesetzt sein! Das wird in der von Dir benutzten Funktion aber standardmäßig angeschaltet durch PreviewMsg : Boolean = TRUE. Diesen Parameter musst Du auf false setzen beim Aufruf der Funktion sendmail.

runger 21. Okt 2005 11:24

Re: Flags für MAPI Sendmail Aufruf
 
Hallo,

hab ich längst gemacht. Steht auf false funktioniert trotzdem nicht.

Rainer

Union 21. Okt 2005 11:27

Re: Flags für MAPI Sendmail Aufruf
 
Seltsam. Wenn ich MAPI_DIALOG verwende, dann erscheint bei mir die Mail auf dem Bildschirm, ich kann sie noch ändern und dann abschicken. Verwende ich als Flags = 0, dann wird die Mail erzeugt, allerdings erscheint eine Abfrage (Eine Anwendung versucht... Dies könnte ein Virus sein...). Allerdings verwende ich OutLook und nicht Notes.
Wenn alles nichts nutzt musst Du vielleicht die Mail direkt per SMTP versenden, das funktioniert immer (wenn der Server Dich ranlässt).


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.

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