2014-12-01 17 views
5

Ich schrieb ein einfaches natives GUI-Skript mit Python-GTK. Jetzt möchte ich dem Benutzer eine Schaltfläche zum Senden einer E-Mail mit einem Anhang geben.Wie öffnet man die bevorzugte Mailanwendung des Benutzers unter Linux?

Das Skript wird auf Linux-Desktops ausgeführt. Gibt es eine Möglichkeit, die bevorzugte Mailanwendung des Benutzers zu öffnen und eine Datei anzuhängen?

+0

Verwandte: http://stackoverflow.com/questions/27836576/adding-several-attachments-to-thunderbird -from-command-line – guettli

Antwort

3

Der Linux-Befehl xdg-email wäre zu nennen, ein Teil des xdg-utils-Paket, das auf den meisten Linux-Desktops (zumindest standardmäßig auf Bogen ist, debian, ubuntu).

xdg-email ist ein "Befehlszeilentool zum Senden von E-Mails mit dem bevorzugten E-Mail-Composer des Benutzers".

vorausgesetzt, dass sie ihre Standardanwendungen ordnungsgemäß eingerichtet haben, wird ihr Standard-E-Mail-Client geöffnet. Sie können Argumente übergeben, um verschiedene Mail-Felder (to, cc, subject, body usw.) sowie Dateinamen der anzuhängenden Dateien zu füllen.

Von Ihrem Python-Skript Sie es nennen könnte os.system() oder die Subprozess-Modul ..

+0

Vielen Dank! Es ist sogar auf alten openSUSE 11.4 verfügbar. – guettli

+0

Das Hinzufügen von Anhängen funktioniert nicht mit xdg-email, wenn der Client thunderbird ist. Sehr traurig. Ich schätze, die meisten Benutzer benutzen Thunderbird. Willkommen bei linux desktop plumbing: https://bugs.launchpad.net/ubuntu/+source/simple-scan/+bug/515386 – guettli

+0

Bis der obige Fehler in xdg-email existiert, verwende ich dies für thunderbird: http: // kb.mozillazine.org/Command_line_arguments_%28Thunderbird%29 – guettli

-2

dies ist, wie Sie User-Agent

settings = webkit.WebSettings() 
    settings.set_property('user-agent', 'iPad') 
    webview.set_settings(settings) 

und Bilder zum Befestigen, werfen Sie einen Blick auf dieses Skript setzen eine Idee

http://pygtk.org/pygtk2tutorial/examples/images.py

dies nicht definitiv zu bekommen, aber ich hoffe, es hilft.

+0

Ich verstehe deine Antwort nicht. Offenbar ändern Sie den HTTP-Benutzeragenten. Ich möchte den nativen E-Mail-Benutzer-Agent öffnen: Thunderbird, evolution ... – guettli

+0

Die Frage ist über das Öffnen des E-Mail-Clients eines Benutzers, nicht das Festlegen des Benutzer-Agents eines HTTP-Clients. Diese Antwort ist nicht relevant. – davidism

3

Sie können das Modul webbrowser verwenden, um eine URL zu öffnen.
Sie können auch das Protokoll mailto nutzen, damit der Webbrowser den Standard-E-Mail-Client des Systems öffnet, falls verfügbar.

Hier ist ein einfaches Beispiel:

import webbrowser 
webbrowser.open("mailto:[email protected]?subject=Hello World") 

Caveat, keine Unterstützung für Anhänge. Das mailto-Protokoll bietet keine Unterstützung für Anhänge. Einige Clients unterstützen (laut google) das Nichtstandard-Attribut attachment=PATH. Aber das konnte ich nicht bestätigen.

Es gibt Möglichkeiten für verschiedene E-Mail-Clients, ein E-Mail-Fenster mit einem Anhang zu öffnen, dies unterscheidet sich jedoch zwischen den einzelnen Clients. Ich kenne auch keine Standardmethode, um festzustellen, welches E-Mail-Programm als Standard festgelegt ist.

Für weitere Informationen, die Sie auch wikipedia überprüfen

+0

Vielleicht könnte die Webbrowser-Instanz irgendwie mit einem assoziativen Array erstellt werden, das die Anhangsdateien enthält? Grat dem ersten Triage-Steward-Abzeichen! :-) – peterh

+0

Das mailto-Protokoll selbst hat keine offizielle Unterstützung für Dateianhänge, daher ist es unwahrscheinlich, dass die Übergabe eines Arrays irgendeinen Unterschied macht. (und ich war zweite) – EWit

+0

Dann könnte die E-Mail (mit seinen Anhängen) mit einigen dritten API-Anruf vielleicht erstellt werden. – peterh