Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi E-Mailprogramm als Standart Mailer in Windows eintragen (https://www.delphipraxis.net/96277-e-mailprogramm-als-standart-mailer-windows-eintragen.html)

Digielm 21. Jul 2007 11:02


E-Mailprogramm als Standart Mailer in Windows eintragen
 
Hallo Leute ich hab ein E-Mail Programm geschreiben und möchte nun wissen wie ich das in der Windows registrierung eintragen kann, damit das Programm auf alle links reagiert wenn ich auf einer Webseite auf eine Mailadresse klicke.

Danke

marabu 21. Jul 2007 11:30

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Hallo,

die Registrierung aller möglichen Clients wird hier beschrieben: Internet Explorer Client Registry Layout

Deinen Default Mail Handler kannst du z.B. über die Internetoptionen in der Systemsteuerung festlegen. Opera nutzt diese Festlegung nicht und auch andere INET-Clients sind nicht verpflichtet sich an diese MS-Regel zu halten.

Grüße vom marabu

Digielm 21. Jul 2007 13:08

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Kann ich das auch direkt in die Registrierug schreiben ?? ich will das der User das nicht selber machen soll. Mein programm soll nach dem Fragen das automatisch machen

Digielm 21. Jul 2007 13:26

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Oder kann ich das nur auber über eine mapimail lösen ???

ich kann des Programm nicht in den Interneteigenschaften unter Programm eintragen. Hab da nur die Mailprogramme zur auswahl die ich mal installiert habe.

Die Muhkuh 21. Jul 2007 13:30

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Hi,

der Link von marabu zur MSDN zeigt Dir alles, was Du brauchst.

Phoenix 21. Jul 2007 15:58

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Es heisst Standard.

Digielm 23. Jul 2007 15:22

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Also klappt alles soweit nur das die Seite auf eine Simple Mapi.dll hinweist woher kriege ich die bzw. Wie mache ich die

Digielm 23. Jul 2007 16:35

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Kann mit jemand helfen wäre super wichtig

Danke

Digielm 23. Jul 2007 17:35

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Ich hab mir eine Mapi gebastelt aus dem link Link DP
und hab das eingefügt um aus einer Webseite angeklickten E-Mailadresse automatisch in mein Mailprogramm zu kommen.

das einzige was ich jetzt aber nicht rausbekomme ist die Mailadresse die angeklickt wurde.

Hat jemand eine Idee ??

Delphi-Quellcode:
function MailtoUrl(lhSession: LHANDLE; ulUIParam: Cardinal;
    var lpMessage: TMapiMessage; flFlags: FLAGS; ulReserved: Cardinal): Cardinal; stdcall;
var
   filename : String;
begin
    filename := RegRead(HKEY_LOCAL_MACHINE,'SOFTWARE\Clients\Mail\confee-CRM\Protocols\mailto\shell\open\command','');
    showmessage(filename);
    Result := 1;
end;

Gerd01 28. Jul 2007 12:34

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Du suchst ein Beispiel?
Hier ist eins. Du brauchst dazu keine mapi.

Delphi-Quellcode:
procedure SetDefaultMailTo(AppName,Clientname : string);
var
  Reg : TRegistry;
  DW : DWord;
  aClient : string;
begin
  aClient := ExtractShortPathName(Appname);
  Reg := TRegistry.Create;
  try

    Reg.RootKey := HKEY_CLASSES_ROOT;
    if Reg.OpenKey('\mailto\shell\open\command',True)
      then Reg.WriteString('',aClient+' %1');
    Reg.CloseKey;
    if Reg.OpenKey('\mailto\DefaultIcon',True)
      then Reg.WriteString('',aClient+',0');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
  DW := 2;
  aClient := ExtractShortPathName(aClient);
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\Software\Clients\Mail',True) then Reg.WriteString('',ClientName);
    Reg.CloseKey;
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName,True) then Reg.WriteString('',ClientName);
    Reg.CloseKey;
    if Reg.OpenKey(SectionStr,True) then Reg.WriteString('','URL:MailTo Protocol');
    if Reg.OpenKey(SectionStr,True) then Reg.WriteBinaryData('EditFlags',dw,SizeOf(DWord));
    if Reg.OpenKey(SectionStr,True) then Reg.WriteString('URL Protocol','');
    Reg.CloseKey;
    if Reg.OpenKey(SectionStr+'\DefaultIcon',True) then Reg.WriteString('',aClient+',0');
    if Reg.OpenKey(SectionStr+'\shell\open\command',True) then Reg.WriteString('',aClient+' %1');
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName+'\Shell\open\command',True) then Reg.WriteString('',aClient+' %1');
  finally
    Reg.Free;
  end;
end;
Wobei AppName deine Exe ist und ClientName eine Name als Identifier.

Du hast dich ja anscheinend mit der Programmierung einer eigenen Mapi-Schnittstelle beschäftigt. Bist du da schon weiter gekommen?

DonMaddin 1. Aug 2007 00:02

Re: E-Mailprogramm als Standart Mailer in Windows eintragen
 
Hallo,

ich hätte zu dem Beispiel Fragen:

1. Wofür steht "SectionStr"?

Delphi-Quellcode:

procedure SetDefaultMailTo(AppName,Clientname : string);
var
  Reg : TRegistry;
  DW : DWord;
  aClient : string;
begin
  aClient := Appname;//ExtractShortPathName(Appname);
  Reg := TRegistry.Create;
  try

    Reg.RootKey := HKEY_CLASSES_ROOT;
    if Reg.OpenKey('\mailto\shell\open\command',True)
      then Reg.WriteExpandString('',aClient+' %1');
    Reg.CloseKey;
    if Reg.OpenKey('\mailto\DefaultIcon',True)
      then Reg.WriteExpandString('',aClient+',0');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
  DW := 2;
  //aClient := ExtractShortPathName(aClient);
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKey('\Software\Clients\Mail',True) then Reg.WriteString('',ClientName);
    Reg.CloseKey;
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName,True) then Reg.WriteString('',ClientName);
    Reg.CloseKey;
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName+'\protocols\mailto\',True) then Reg.WriteString('','URL:MailTo Protocol');
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName+'\protocols\mailto\',True) then Reg.WriteBinaryData('EditFlags',dw,SizeOf(DWord));
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName+'\protocols\mailto\',True) then Reg.WriteString('URL Protocol','');
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName+'\protocols\mailto\DefaultIcon',True) then Reg.WriteExpandString('',aClient+',0');
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName+'\protocols\mailto\shell\open\command',True) then Reg.WriteExpandString('',aClient+' %1');
    Reg.CloseKey;
    if Reg.OpenKey('\Software\Clients\Mail\'+ClientName+'\shell\open\command',True) then Reg.WriteExpandString('',aClient+' %1');
    Reg.CloseKey;
  finally
    Reg.Free;
  end;
end;
Ich habe mal den Code angepasst und mich an den Registry-Einträge von OutlookExpress orientiert.
Wenn ich aus dem Browser raus einen Link mit maito.. anklicke, startet meine exe bzw. bekommt den Focus.
Allerdings passiert nichts, wenn ich im Windows Explorer auf ein File gehe und "Senden an../ Email-Empfänger" wähle.

2. Wenn ich mein Programm auf diese Art & Weise registriere, wie bekomme ich es dann mit, wenn der User aus anderen Programmen eMails verschicken will und wie verarbeite ich die Parameter wie z.B. mailto:... oder wenn Dateien verschickt werden sollen.

Danke.

Gruss Martin


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