Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi E_Mail (https://www.delphipraxis.net/204726-e_mail.html)

oldmann 22. Jun 2020 15:35

E_Mail
 
Hallo,

meine E-Mailroutine läuft seit Tokyo 10.2.2 nicht mehr.
Es kommt die Meldung 'Nutzerabruch'.
Ich finde da leider keinen Fehler und sie funktionierte ja sonst auch.
Vielleicht weiß von Euch jemand wo der Fehler steckt oder was sich in Tokyo 10.2.2 verändert hat.
Für Eure Hilfe wäre ich dankbar.

Gruss Oldmann


Delphi-Quellcode:
procedure TMemo_m.Button1Click(Sender: TObject);
var
  MMessage : TMapiMessage;
  Fehler : Integer;
  Empfaenger : Array[0..1] of TMapiRecipDesc;
  Absender : TMapiRecipDesc;
begin
  with MMessage do begin
    ulReserved := 0;
    lpszNoteText := PAnsiChar(AnsiString(Memo1.Lines.Text));
    lpszSubject := PAnsiChar(AnsiString('Datensatz Nr. '+IntToStr(satznum)+' aus Dateien '+svw1+'.Svw'));
    lpszMessageType := nil;
    lpszDateReceived := nil;
    lpszConversationID := nil;
    flFlags := 0;

    // Absender festlegen
    Absender.ulReserved:=0;
    Absender.ulRecipClass:=MAPI_ORIG;
    Absender.lpszName:= PAnsiChar(AnsiString('Absender'));
    Absender.lpszAddress:= PAnsiChar(''{AnsiString(Memo_ans.Edit3.Text)}); //Emailadresse Absender
    Absender.ulEIDSize:=0;
    Absender.lpEntryID:=nil;

    lpOriginator := @Absender;

    //Empfänger festlegen ... hier ein Empfänger
    nRecipCount := 1;
    Empfaenger[0].ulReserved:=0;
    Empfaenger[0].ulRecipClass:=MAPI_TO;
    Empfaenger[0].lpszName:= PAnsiChar('');//Empfängername
    Empfaenger[0].lpszAddress:=        PAnsiChar(AnsiString(Memo_ans.Edit3.Text));//Emailadresse


//    Empfaenger[0].lpszName:= PChar('');//Empfängername
//    Empfaenger[0].lpszAddress:= PChar('');//Emailadresse
    Empfaenger[0].ulEIDSize:=0;
    Empfaenger[0].lpEntryID:=nil;

    lpRecips := @Empfaenger;

    nFileCount := 0;
    lpFiles := nil;
  end;
  Fehler := MapiSendMail(0, 0, MMessage, MAPI_DIALOG or MAPI_LOGON_UI or MAPI_NEW_SESSION, 0);
  case fehler of
    0                 : ;
    MAPI_E_USER_ABORT : showmessage('Nutzerabbruch');
    else
      showmessage('Fehler');
  end;
end;

TiGü 22. Jun 2020 16:58

AW: E_Mail
 
Auch wenn es nicht unbedingt mit deinen Fehler zu tun hat, bitte ändere den Rückgabewert "Fehler" von Integer gemäß der MSDN Dokumentation zu einem Winapi.Windows.ULONG (also ein unsigned integer 32-Bit aka Cardinal).

Und nur um sicher zu gehen bitte als erste Zeile
Delphi-Quellcode:
FillChar(MMessage, SizeOf(MMessage), 0);
Das gleiche Spiel auch für
Delphi-Quellcode:
Empfaenger
und
Delphi-Quellcode:
Absender
.

himitsu 22. Jun 2020 17:32

AW: E_Mail
 
Geht ein altes Programm noch?
Nicht dass es ein Fehler beim Mailprogramm/Windows liegt.

Ich dachte auch erst vielleicht an Unicode, das Embarcadero es jtzt geschafft hat die UnicodeAPI (MapiSendMailW) zu implementieren, aber du da den falschen PAnsiChar übergibst,
aber sieht nicht so aus.

Und ja, den Record zu initialisieren kann nie schaden, da du nicht alle Parameter benutzt/zuweist.

Harry Stahl 22. Jun 2020 18:17

AW: E_Mail
 
Was war denn die Delphi-Version, mit der es funktionierte?
Und welche Windows-Version nutzt Du (genau)?
Mit der vorherigen Delphi-Version funktioniert es nach wie vor auf dem von Dir benutzten System?

oldmann 23. Jun 2020 08:23

AW: E_Mail
 
Hallo,

erst mal vielen Dank an alle.
Also ich benutze wie bereits oben beschrieben Tokyo 10.2.2.
Mein PC hat einen Ryzen 5 Prozessor.
Das Betriebssystem ist Windows 10 Pro.
Version 1909, Betriebssystembuilt 18363.90.
Ich habe alle älteren Versionen die das Mailprogramm enthalten geprüft und bei allen kommt die Fehlermeldung „Nutzerabbruch“.
Auch bei Versionen die mit Delphi 6 Prof. und Delphi Berlin geschrieben sind.
Die liefen sonst alle problemlos.
Jetzt kommt der Clou.
Ich habe die Programme auch mal auf meinem Notebook getestet.
Windows 10 Home und ein Intel i5 Prozessor.
Version 1903, Betriebssystembuilt 18362.90.
Dort laufen die Emailroutinen in allen Programmen einwandfrei.
Wie kann das sein????
Hat jemand schon einmal so etwas gehört ?
Mir fehlt im Moment die Zeit, aber ich werde auf beiden Rechnern die Emailroutinen Schritt für Schritt vergleichen.
Irgendwo muss die Fehlermeldung doch herkommen.

Gruß Oldmann

sh17 23. Jun 2020 08:39

AW: E_Mail
 
welches E-Mail-Programm?

oldmann 23. Jun 2020 08:50

AW: E_Mail
 
Hallo Sven,

Mein E-Mailprogramm ist Thunderbird Version 68.9.0 64 Bit.

Gruss Oldmann

sh17 23. Jun 2020 09:17

AW: E_Mail
 
Ich hatte das früher auch schon mal festgestellt und hab dann nicht mehr allzuviel auf diesen Rückgabewert gesetzt.

Gibt es einen Unterschied, wenn Du die Mail direkt weg sendest oder sie erst einmal im Postausgang speicherst?

oldmann 23. Jun 2020 10:34

AW: E_Mail
 
Hallo Sven,

das verstehe ich nicht.
Die Mail aus dem Programm erreicht ja Thunderbird überhaup nicht.

Oldmann

sh17 23. Jun 2020 10:56

AW: E_Mail
 
achso, das Mailprogramm geht gar nicht erst auf... Den Effekt kenne ich, ob der allerdings dieses Funktionsergebnis hat weiß ich nicht.

Mach mal diesen Eintrag

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\ Windows Messaging Subsystem]
"MAPI"="1"


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:48 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