Email-Programm aufrufen

Für Fragen von Einsteigern und Programmieranfängern...
Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Email-Programm aufrufen

Beitrag von Andromeda »

Hallo,

ich möchte in mein Programm einen Button einbauen, über den der Benutzer eine Email an mich schicken kann. Es soll also der Standard Email-Client auf dem Rechner aufgerufen werden und das Feld mit der Email-Adresse soll schon mit meiner Adresse vorbelegt sein. Der Benutzer braucht dann nur noch seinen Text eingeben und auf den Senden-Button zu klicken. Da ich Synapse bereits in Lazarus eingebunden habe, denke ich, dass es da bestimmt auch eine Unit und einen Befehl gibt, mit dem das gemacht werden kann.

hausi
Beiträge: 132
Registriert: Mi 23. Sep 2009, 08:44
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Email-Programm aufrufen

Beitrag von hausi »

Das geht mit shellapi. Hier ein Muster aus Delphi

uses ShellApi;
...
ShellExecute(Application.Handle, 'open',
PChar('mailto:name@domain.de?subject=Betreff&body=irgendein Text'), nil, nil, sw_ShowNormal);

Bei Lazarus musst Du in Uses win nehmen.

Google einfach mal nach Shellapi. Wenn ich Zeit habe, suche ich ein Muster in meinen Mustern und veröffentliche dieses. Doch bin momentan nicht im Office und wollte Die einfach schnell auf den richtigen Weg führen.

Hausi

baumina
Beiträge: 152
Registriert: Mo 3. Feb 2014, 14:07
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: Email-Programm aufrufen

Beitrag von baumina »

Vielleicht geht das auch:

Code: Alles auswählen

 
uses LCLIntf;
OpenURL('mailto:myadr@test.de?subject=test&body=Hello World')
 
.

Andromeda
Beiträge: 120
Registriert: So 4. Jan 2015, 20:18

Re: Email-Programm aufrufen

Beitrag von Andromeda »

baumina hat geschrieben:Vielleicht geht das auch:

Code: Alles auswählen

 
uses LCLIntf;
OpenURL('mailto:myadr@test.de?subject=test&body=Hello World')
 


Vielen Dank,

das funktioniert wunderbar.

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Email-Programm aufrufen

Beitrag von Aliobaba »

... schade, bei mir nicht (Linux: Kubuntu):
Es wird kein Fehler "gemeldet". Es kommt aber keine Mail an, wenn ich dieses "Hello World" an mich sende.
Andere URL-Aufrufe (sei es die lokale Festplatte oder eine Web-Seite) funktionieren aber.

Code: Alles auswählen

procedure TF_Aufruf.Bt_MailClick(Sender: TObject);
begin
 OpenURL('mailto:Meine@Mailadresse.de?subject=test&body=Hello World'); // Adresse natürlich geändert
 OpenURL('http://www.focus.de/');     // Das funktioniert!
end;
 

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6209
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Email-Programm aufrufen

Beitrag von af0815 »

Aliobaba hat geschrieben:... schade, bei mir nicht (Linux: Kubuntu):
Es wird kein Fehler "gemeldet". Es kommt aber keine Mail an, wenn ich dieses "Hello World" an mich sende.
Andere URL-Aufrufe (sei es die lokale Festplatte oder eine Web-Seite) funktionieren aber.



Dann stellt sich die Frage ob dein Mailprogramm sich richtig beim System registriert hat und/oder die Syntax versteht. Was ist dein 'Default' Mailprogramm ? KMail, Thunderbird ?
Man kann unter

Code: Alles auswählen

System -> Einstellungen -> Bevorzugte Anwendungen -> Internet -> E-Mail-Betrachter
auch nachsehen was dort eingetragen ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Email-Programm aufrufen

Beitrag von Aliobaba »

... danke für die schnelle Antwort!

daran wird's wohl ganz sicher liegen! Kann das aber Problem aber trotzdem aktuell nicht lösen, da ich unter "System" (Kubuntu) den Eintrag "Einstellungen" nicht finde (unter dem Buchstaben "E" leider nur den Eintrag "Einstellungen für Nautilus-Aktionen"

... aber das ist jetzt kein "Lazarus-Problem" mehr... :(

Aliobaba
(aber vielleicht kann mir ja trotzdem jemand helfen)
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Re: Email-Programm aufrufen

Beitrag von knight »

Systemeinstellungen -> Persönliche Informationen -> Anwendungen -> Standard-Anwendungen -> E-Mail-Programm

knight

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Email-Programm aufrufen

Beitrag von Mathias »

Bei mir mit Linux Mint geht es auch.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Email-Programm aufrufen

Beitrag von Aliobaba »

Danke für die Antworten, obwohl es - wie gesagt - ja jetzt kein "Lazarus-Thema" mehr ist! :)

Systemeinstellungen -> Persönliche Informationen -> Anwendungen -> Standard-Anwendungen -> E-Mail-Programm
Leider klappt's bei mir immer noch nicht; ich finde unter diesem "Pfad" nur "Einrichtung der Akonadi-Ressourcen" : keine weiteren Menüeinträge :cry:
Systemeinstellungen -> Persönliche Informationen -> Einrichtung der Akonadi-Ressourcen (als einzigen Eintrag)

Na, ja; Linux macht's einem oft nicht gerade leicht: Leider wieder einmal. Ich sage das, obwohl ich sehr begeistert fast ausschließlich nur mit Linux arbeite und programmiere.
Deshalb auch meine "Bemerkung" im "Handbuch" zu meinem Projekt "MyMemoryDB":

"MyMemoryDB" unter Windows und Linux
"MyMemoryDB" "läuft" unter Windows und unter Linux, wobei das "Linux-Programm" optimiert
ist für die Darstellungsweise von "Kubuntu". Leider (manche sagen "zum Glück") gibt es
verschiedenste Linux-Distributionen, so dass die Bildschirmdarstellung immer ein wenig
unterschiedlich sein kann. Als Programmierer würde man sich hier eher eine bessere Einheitlichkeit
wünschen. Bestünde so eine Einheitlichkeit schon seit 20 Jahren, wäre Linux meiner Meinung nach
auch im Desktop-Bereich sehr, sehr viel weiter verbreitet und erfolgreicher. Die Schwierigkeit,
Programme auf den Markt zu bringen, die auf jedem PC unterschiedlich aussehen, deren Schriften
unterschiedlich Platz benötigen, deren Dateien auf jedem PC anders angeordnet sind,nehmen viele
Software-Hersteller ganz einfach nicht auf sich.


Ein schönes Wochenende an Alle!
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

TerribleCode
Beiträge: 38
Registriert: Di 18. Nov 2014, 22:50
OS, Lazarus, FPC: Windows 7 [x64]; Lazarus 1.6.4 [i386-win32]; FPC 3.0.2 [win32 i386]
CPU-Target: 64Bit

Re: Email-Programm aufrufen

Beitrag von TerribleCode »

@Aliobaba:
Klappt es denn mit Mail-Links aus dem Web?
Kannst du z.B. testen indem du eine HTML Datei mit folgendem Inhalt erstellst und im Browser öffnest:

Code: Alles auswählen

<a href="mailto:email@test.de?subject=Betreff&body=Text">email@test.de</a>

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Email-Programm aufrufen

Beitrag von Aliobaba »

Danke für die Antwort.
Mit HTML kenne ich mich aber nicht so besonders gut aus.
Jedenfalls: Wenn ich diese Zeile in eine Leere Seite des "KompoZer" schreibe, dann erscheint beim Aufruf wiederum nur diese Zeile im Browser.
Aber wahrscheinlich braucht der HTML-Code noch einige Dinge "drumherum" und meine Vorgehendweise ist ein wenig naiv.
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

TerribleCode
Beiträge: 38
Registriert: Di 18. Nov 2014, 22:50
OS, Lazarus, FPC: Windows 7 [x64]; Lazarus 1.6.4 [i386-win32]; FPC 3.0.2 [win32 i386]
CPU-Target: 64Bit

Re: Email-Programm aufrufen

Beitrag von TerribleCode »

Leider darf ich hier keine HTML-Datein hochladen, desswegen hier ein externer Link zu einer Datei (334 Bytes) mit dem nötigen "drumherum" :)
http://s000.tinyupload.com/index.php?file_id=95990321051294837252

Lade dir die Datei runter und öffne sie mit deinem Browser... Doppelklicken, Drag&Drop oder in Firefox geht auch: [STRG]+O

"mail-test.html" MD5-Summe = e3ed69bc36cb9d6fb74aaa707c7f6030

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Email-Programm aufrufen

Beitrag von Aliobaba »

... das war jetzt aber super nett!! Danke, TerribleCode!!

Ja es funktioniert alles. Ich kann den downgelodeten HTML-Quelltext mit einem Editor ("Kate") öffnen und die Zeile:
-> <a href="mailto:xxx@MeineAdresse.de?subject=Betreff&body=Das ist mein Text">Klick mich!</a>
bearbeiten

Code: Alles auswählen

<!DOCTYPE html>
<html>
<head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
   <style type="text/css">body{text-align:center}</style>
   <title>E-Mail-Link Test</title>
</head>
<body>
   <h1>E-Mail-Link Test</h1>
   <a href="mailto:xxx@MeineAdresse.de?subject=Betreff&body=Das ist mein Text">Klick mich!</a>
</body>
</html>

Und wenn ich in der HTML-Darstellung "Klick mich" anklicke, dann öffnet mein Mail-Programm!!! ( Thunderbird)
Thunderbird ist also als Standard-Mailprogramm in meinem "Kubuntu" hinterlegt.

Damit wäre es natürlich dann schon interessant, warum der folgende Code zwar die "Focus"-Seite aufmacht, nicht aber mein Mailprogramm.

Code: Alles auswählen

procedure TF_Aufruf.Bt_MailClick(Sender: TObject);
begin
 OpenURL('mailto:Meine@Mailadresse.de?subject=test&body=Hello World'); // Adresse natürlich geändert
 OpenURL('http://www.focus.de/');     // Das funktioniert!
end;

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

TerribleCode
Beiträge: 38
Registriert: Di 18. Nov 2014, 22:50
OS, Lazarus, FPC: Windows 7 [x64]; Lazarus 1.6.4 [i386-win32]; FPC 3.0.2 [win32 i386]
CPU-Target: 64Bit

Re: Email-Programm aufrufen

Beitrag von TerribleCode »

Aliobaba hat geschrieben: [...] Und wenn ich in der HTML-Darstellung "Klick mich" anklicke, dann öffnet mein Mail-Programm!!! ( Thunderbird) [...]

Danke, das wollte ich wissen :)


Hast du es eigentlich auch mal nur mit einem Link versucht, ohne Betreff und Text?

Code: Alles auswählen

OpenURL('mailto:Meine@Mailadresse.de');


Und was gibt dir die Funktion eigentlich zurück (True,False)?

Code: Alles auswählen

procedure TF_Aufruf.Bt_MailClick(Sender: TObject);
begin
  if OpenURL('mailto:Meine@Mailadresse.de')=False then ShowMessage('Ups!');
end;

Antworten