![]() |
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:
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.
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; 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 |
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 |
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 |
Re: Flags für MAPI Sendmail Aufruf
Zitat:
wie wäre es mit MapiLogon, damit Du ein Sessionhandle erhältst? Du verwendest bei mapiSendMail 0 als Sessionhandle... |
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?
|
Re: Flags für MAPI Sendmail Aufruf
Hallo,
wenn du mir jetzt noch sagst wie man mapilogon benutzt wäre ich glücklich. Rainer |
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 |
Re: Flags für MAPI Sendmail Aufruf
Zitat:
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); |
Re: Flags für MAPI Sendmail Aufruf
Hallo,
funktioniert nicht. Notes öffnet das New mail Fenster, trägt alles ein, dann ist schluss. Rainer |
Re: Flags für MAPI Sendmail Aufruf
Was heisst "Schluss"? Hängt sich das Mailfenster auf oder was?
|
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 |
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.
|
Re: Flags für MAPI Sendmail Aufruf
Hallo,
hab ich längst gemacht. Steht auf false funktioniert trotzdem nicht. Rainer |
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 00:39 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