Mailclient starten

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Mailclient starten

Beitrag von catweasel »

Moin

Ich versuche hier ein Mailclient zu starten und Adresse, Betreff und einen kleinen Text mitzugeben.

Dazu zwei Fragen:
Es funktioniert zwar soweit, aber hier wird jedesmal Outlook komplett neu gestartet.
Eigendlich möchte ich ja nur den Mailclient haben. Wie erreiche ich es nur den Mailclient zu starten, falls Outlook (oder ein anderes Mailprogramm) schon gestartet ist?

Und als zweites gebe ich hier ja fest den Pfad zu Outlook ein.
Kann man das nicht irgendwie verallgemeinern, da ich ja nicht weis ob jeder Nutzer a) Outlook hat, und b) ob es in dem Pfad ist.

So sieht mein Programmteil bisher aus:

Code: Alles auswählen

procedure TForm1.MenuItem1Click(Sender: TObject);
var  AProcess:  TProcess;
begin
  AProcess := TProcess.Create(nil);
 
  AProcess.Executable:='C:\Program Files (x86)\Microsoft Office\Office12\outlook.exe';
  AProcess.Parameters.Add('mailto:m.eine@adresse.de?subject=Bugreport&body=Hello World');
  AProcess.Options := AProcess.Options + [];
 
  AProcess.Execute;
  AProcess.Free;
 
end; 
Gruß
Michael

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Mailclient starten

Beitrag von Scotty »

Es ist schade, dass sich niemand um ein sauberes Lazarus-Wiki kümmert. Es gibt die wunderbare LCLIntf-Funktion OpenURL() mit der deine hässlichen Process-Aufrufe überflüssig sind. Aber so etwas steht, wenn überhaupt, nur am Rande.

Code: Alles auswählen

uses ...LCLIntf;
OpenURL('mailto:'+aReceiver+'?subject='+aSubject);

catweasel
Beiträge: 230
Registriert: Di 17. Mär 2009, 10:51
OS, Lazarus, FPC: Win10 64Bit // Linux Mint 20.0 - (L 2.2.0 FPC 3.2.2)

Re: Mailclient starten

Beitrag von catweasel »

Scotty hat geschrieben:Es ist schade, dass sich niemand um ein sauberes Lazarus-Wiki kümmert. Es gibt die wunderbare LCLIntf-Funktion OpenURL() mit der deine hässlichen Process-Aufrufe überflüssig sind. Aber so etwas steht, wenn überhaupt, nur am Rande.

Code: Alles auswählen

uses ...LCLIntf;
OpenURL('mailto:'+aReceiver+'?subject='+aSubject);
Danke für die Hilfe. Die LCLIntf-Funktion OpenURL() kannte ich tatsächlich noch nicht :cry:

Falls es später noch jemanden interessiert: Man kann zusätzlich auch noch Texte übergeben:

Code: Alles auswählen

OpenURL('mailto:'+aReceiver+'?subject='+aSubject+'&body='+aBody);


Gruß
Michael

kunstlust
Beiträge: 30
Registriert: Fr 29. Jun 2012, 09:36

Re: Mailclient starten

Beitrag von kunstlust »

Ich würde das per ShellExecute umsetzen:

Code: Alles auswählen

 
uses ....shellapi;
ShellExecute(0, 'open', PCHAR('mailto:nail@test.local?subject=Subject&body=Bodytext'), NIL, NIL, 0);   
 

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Mailclient starten

Beitrag von Scotty »

kunstlust hat geschrieben:... ShellExecute
Hätte ich was zu sagen, würde ich plattformspezifische Befehle verbieten. Bzw. so weit wegkapseln, dass keine auf die Idee kommt, danach zu suchen. :evil:

kunstlust
Beiträge: 30
Registriert: Fr 29. Jun 2012, 09:36

Re: Mailclient starten

Beitrag von kunstlust »

Scotty hat geschrieben:
kunstlust hat geschrieben:... ShellExecute
Hätte ich was zu sagen, würde ich plattformspezifische Befehle verbieten. Bzw. so weit wegkapseln, dass keine auf die Idee kommt, danach zu suchen. :evil:
Nicht jeder Anwendung muss auf allen Systemen laufen, ich nutze z.B. APIs von Tobit, da macht es keinen Sinn, da ohne die API-Funktion das Tool keinen Nutzen hat und Outlook ist nunmal ein Windowsclient. :wink:

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Mailclient starten

Beitrag von m.fuchs »

Scotty hat geschrieben:
kunstlust hat geschrieben:... ShellExecute
Hätte ich was zu sagen, würde ich plattformspezifische Befehle verbieten. Bzw. so weit wegkapseln, dass keine auf die Idee kommt, danach zu suchen. :evil:
Naja, das ginge mir auch etwas zu weit. Es gibt ja durchaus Entwickler, die nur für ein System programmieren und unbedingt eine spezielle Lösung brauchen, für die es keinen Ersatz gibt. Warum allerdings in diesem Fall anstelle einer gut-funktionierenden, plattform-unabhängigen Lösung jemand ShellExecute benutzen würde, ist mir auch unverständlich.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Mailclient starten

Beitrag von carli »

Nur zur Info: Zum Starten des Mail-Client ist die MAPI zuständig.
Mit der MAPI kann man auch Anhänge per Default in eine Mail anhängen.

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Mailclient starten

Beitrag von mschnell »

carli hat geschrieben:Nur zur Info: Zum Starten des Mail-Client ist die MAPI zuständig..
Soweit ich weiß, gibt es MAPI auf Linux nicht.

-Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Mailclient starten

Beitrag von m.fuchs »

mschnell hat geschrieben:
carli hat geschrieben:Nur zur Info: Zum Starten des Mail-Client ist die MAPI zuständig..
Soweit ich weiß, gibt es MAPI auf Linux nicht.
Noch schlimmer: es geht auch auf Windows nicht, also nicht durchgehend. So richtig funktioniert es nämlich nur mit Outlook und Exchange.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Benutzeravatar
jwdietrich
Beiträge: 173
Registriert: Mo 20. Okt 2008, 20:50
OS, Lazarus, FPC: macOS 10.4-14.1, Windows 2000-11, Raspbian (L 3.7.0, FPC 3.2.2)
CPU-Target: PowerPC, Intel, ARM
Wohnort: Hattingen, NRW
Kontaktdaten:

Re: Mailclient starten

Beitrag von jwdietrich »

Scotty hat geschrieben:Es ist schade, dass sich niemand um ein sauberes Lazarus-Wiki kümmert. Es gibt die wunderbare LCLIntf-Funktion OpenURL() mit der deine hässlichen Process-Aufrufe überflüssig sind. Aber so etwas steht, wenn überhaupt, nur am Rande.
Kleiner Tip: Man kann die Seiten des Lazarus-Wiki bearbeiten.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Mailclient starten

Beitrag von Christian »

Hat jemand schon ne Lösung dafür für mehre Plattformen ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: Mailclient starten

Beitrag von mschnell »

m.fuchs hat geschrieben:Noch schlimmer: es geht auch auf Windows nicht, also nicht durchgehend. So richtig funktioniert es nämlich nur mit Outlook und Exchange.
Wenn ich das richtig sehe installiert Thunderbird in Windows auch einen MAPI - Treiber :D
-Michael

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Mailclient starten

Beitrag von m.fuchs »

mschnell hat geschrieben:
m.fuchs hat geschrieben:Noch schlimmer: es geht auch auf Windows nicht, also nicht durchgehend. So richtig funktioniert es nämlich nur mit Outlook und Exchange.
Wenn ich das richtig sehe installiert Thunderbird in Windows auch einen MAPI - Treiber :D
Ja, aber alles funktioniert da auch nicht. Habe schon oft genug Probleme mit der Übergabe gehabt und auch Mozilla selbst schreibt über die Defizite: http://kb.mozillazine.org/MAPI_Support.

Für die Anforderungen des OP reicht die Unterstützung aber locker aus. Nur manchmal kommen sich dann zwei Mailprogramme in die Quere, aber das ist ja eher Schuld der Benutzers :wink:
Wieauchimmer, ansteuern würde ich die MAPI nur über den OpenUrl-Aufruf mit "mailto:". Wenn es plattformunabhängig geeht, soll man es auch gleich so machen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: Mailclient starten

Beitrag von Christian »

Geht das mit Thunderbird unter Windows, Anhänge über mailto anzugeben ?
Unter Linux gehts leider nicht. Da gehts dafür über -compose mit Thunderbird
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten