Mittwoch, 18. Mai 2011

[Tutorial] Emails versenden mit Tasker und einem Python Skript

Standardmäßig lässt sich mit Tasker eine Email nur erstellen, um diese zu versenden muss man noch selber auf "Senden" drücken. Dies kann einen zwar etwas Arbeit ersparen, aber wirklich praktisch wäre es doch wenn eine Mail richtig automatisch versendet werden kann.

Zum Glück besteht in Tasker die Möglichkeit Skripte auszuführen. Dafür benötigt man den "Script Layer for Android", kurz "SL4A" und einen Interpreter für die gewünschte Programmiersprache. Tasker kann nun "SL4A" starten und ein Skript ausführen lassen. Mit diesen Skripten kann man die verschiedensten Aufgaben erledigen, zum Beispiel eine Email senden. Dazu gibt es schon die "sendemail.py". Um nun eine automatische Email zu versenden, muss erst einmal "SL4A" und "Python" installiert werden.


Die nötigen APKs findet man in der Goolge-Code Project Seite:


Aus dieser Liste benötigt man die aktuelle "sl4a_rX.apk" und die "PythonForAndroid_rX.apk", das "X" repräsentiert die aktuelle Releasenummer. Zuerst installiert man das "SL4A" danach "PythonForAndroid". Nun finden sich unter den Apps zwei neue Verknüpfungen, nämlich "SL4A" und "Python for Android". Als erstes müssen noch die nötigen Dateien für Python runtergeladen werden, dazu öffnen wir "Python for Android" und klicken den obersten Button "Install". Nun werden 3 Pakete runtergeladen und installiert. Wenn dies geschehen ist können wir "SL4A" starten, hier müssten jetzt ein paar Python Skripte gelistet sein. Ist dies der Fall haben wir "SL4A" und "Python for Android" richtig installiert.

Nun muss das "sendemail.py" Skript runtergeladen werden. Den Link findet ihr am Ende dieses Posts. Diese Datei speichern wir in dem Ordner "/sdcard/sl4a/scripts". Damit das Skript genutzt werden kann müssen noch ein paar Zeilen bearbeitet werden, dies kann auf dem PC mit dem Notepad geschehen oder auf dem Androiden mit direkt "SL4A" oder einem anderen Texteditor. Folgende Zeilen müssen verändert werden:

# CHANGE THESE!
    email_name = '' # Optional - A friendly name for the 'From' field
    email_user = '<gmail/google apps username>'
    email_pass = '<gmail/google apps password>'

Hier müssen die Google Nutzerdaten eingetragen werden.

# Otherwise, default to the following location
    conf_file = '/mnt/sdcard/tmp/mailout.conf'

Hier muss ein Pfad eingetragen werden in welchen wir später mit Tasker die Konfigurationsdatei erstellen. Ich habe dort einfach den folgenden Pfad eingetragen:

'/mnt/sdcard/Tasker/mail.conf'


Nun ist das Skript einsatzbereit. Um nun eine Mail zu versenden muss als erstes eine Konfigurationsdatei mit Empfänger, Betreff und Text erstellt werden. Diese könnte zum Beispiel folgendermaßen ausschauen:

mailto: HansWurst@googlemail.com
subject: Eine automatische Email
body:
Hallo Hans, voll cool was mit Tasker alles geht ;)
  
Man beachte dabei, dass der Inhalt der Mail eine Zeile unter "body:" stehen muss, sonst funktioniert es nicht. Eine solche Datei lässt sich ohne Probleme mit Tasker erstellen. Dazu erstellen wir zunächst einen neuen Task und nennen ihn zum Beispiel "Send Email". In diesem Task erstellen wir zuerst eine Konfigurationsdatei und führen dann das Skript aus.
  • Task: "Send Email"
    1. File -> Write File
      • File: Tasker/mail.conf
      • Text: Alles was in die Konfigurationsdatei muss
    2. Misc -> Run Script
      • Name: sendemail.py
    3. Tasker -> Wait
      • Minute: 1 
    4. File -> Delete File
      • File: temp/mail.conf
Das wars schon :) Die letzte Aktion dient einfach nur dazu das System wieder zu bereinigen. Bevor die Datei aber gelöscht werden kann, muss etwas gewartet werden um sicher zu gehen, dass die Mail bereits versendet wurde.

Toll, aber was kann man jetzt damit anstellen?
Man kann diesen Task nach bestimmten Ereignissen ausführen lassen. So könnte man sich zum Beispiel automatisch eine Kopie der gerade empfangenen SMS als Email zusenden lassen. Dazu muss einfach nur in die Konfigurationsdatei die Variable %SMSRB unter "body:" eingetragen werden. %SMSRB enthält den Inhalt der zuletzt empfangenen SMS. Ansonsten gibt es der Möglichkeiten viele :), mir fallen sicher ein paar Sachen ein die ich dann im Blog posten werde :)

Hier noch ein Tipp von FATlui für alle Nichtgooglemailer:
Hier noch für alle nicht-Googleaccounts die angepasste Python:
http://forum.xda-developers.com/showthread.php?t=937379 Profile liegen bei Bedarf auch schon bei. Bei mir funktioniert es einwandfrei!
Quellen:
sendemail.py: http://tasker.wdfiles.com/local--files/sendemail/sendemail.py
Wiki: http://tasker.wikidot.com/sendemail
Scripting Layer for Android: http://code.google.com/p/android-scripting/

Kommentare:

  1. Danke:
    Hier noch für alle nicht-Googleaccounts die angepasste Python:

    http://forum.xda-developers.com/showthread.php?t=937379

    Profile liegen bei Bedarf auch schon bei.
    Bei mir funktioniert es einwandfrei!

    AntwortenLöschen
  2. Haha. So kann ich es realisieren wenn ich z.b. an einem bestimmten Ort bin, meinen Facebook Status automatisch upzudaten:P

    AntwortenLöschen
  3. :D zum Beispiel.
    Ich nutze es für den Handylocator falls ich mein Handy mal verlegt hab, bzw. wenn jemand der auf mich wartet wissen will wo ich gerade bin.

    AntwortenLöschen
  4. Ich habe alles streng nach Anleitung gemacht...

    ABER es geht nicht! :-(
    Ich habe als First Context "Missed Call" genommen und danach alles so wie beschrieben gemacht!?
    Frage beim muss ich da hans.muster oder hans.muster@gmail.com eintragen

    Kannst du nicht mal eine "genauere" Anleitung machen!? Auch Step by step was wo genau im Text mit SL4A eingetragen werden muss!

    Ich habe jetzt 2 Stunden versucht und bringe es nicht hin!

    AntwortenLöschen
  5. Es reicht hans.muster, aber in ' eingerahmt! Das heißt es sollte folgendermaße aussehen:

    email_user = 'hans.muster'
    email_pass = 'musterpasswort'

    Weiterhin ist wichtig das der PFad der Config Datei stimmt, also in dem Skript das gleiche Verzeichnis und Dateiname angegeben ist, wie bei Write File in Tasker.

    Als Test ob das Skript überhaupt ausgeführt wird kannst du bei der "Run Skript" Aktion mal den Haken bei "Terminal" setzen, dann zeigts dir eventuelle Fehlermeldungen die das Skript auswirft an.

    Hast du SL4A inklusive der Pythonerweiterung korrekt installiert? D.h. wenn du aus dem App Drawer SL4A öffnest, solltest du eine Liste mit verschiedenen auf .py endenden Dateien sehen.

    Überprüf die 4 Sachen mal, wenn du gar nicht weiterkommst gib bescheid, dann stell ich mal nen Dropboxlink zu meinem geänderten Skript und dem Tasker Task hier rein.

    AntwortenLöschen
  6. Also es ist möglich, dass es funkionieren könnte, aber nun ist ein neues Problem aufgetaucht! Mir fallen jetzt dann die Haare aus.. ;-)

    Immer wenn Tasker das sendemail.py starten soll, läuft Sl4a an, stürzt dann aber jedes mal ab.
    Habe schon beide Programme de- und neuinstalliert.

    Leider keine Änderung

    Eine Idee? Ach ja zur Info:
    Handy ist gerootet und das Miui-Rom ist drauf.
    Ich bin mir kurz davor alle Haare auszureissen! :-(

    AntwortenLöschen
  7. Hast du mal das Terminal in Run Script aktiviert? Evtl gibt der kurz vorm Absturz ne Fehlermeldung aus, solche Probleme hatte ich Anfangs auch als ich noch nicht genau wusste wie man den Benutzernamen angibt etc..

    PS: nicht verzweifeln, wenn alles gleich von Anfang an funktioniert, weiß man seine Leistung gar nicht zu schätzen ;)

    AntwortenLöschen
  8. Also SL4A gibt folgende Fehlermeldung aus:
    Prozess com.googlecode.android_scripting
    wurde unerwartet beendet.

    Ich kann ja im SL4A App die sendemail.conf Datei auch mit dem Zahnrad auslösen und da kommt die selbe meldung. Irgend etwas stimmt wohl nicht mit dieser Datei. Habe alles nochmals durchgesehn. Alles steht in 'beispiel'

    Also wenn das endlich läuft, bin ich wirklich froh!:-)

    AntwortenLöschen
  9. hm klingt eigentlich eher nach nem Fehler in SL4A, ich hab mein SKript mal in die Dropbox geladen:

    http://dl.dropbox.com/u/11578362/sendemail.py

    Du musst nur noch deine Googledaten angeben.
    Als Konfigfile erwartet er: "mnt/sdcard/Tasker/mail.conf"

    AntwortenLöschen
  10. Ok also es hat im SL4A ja noch andere Dateien, welche ausgewählt werden können. z.B speak.py

    Ich habe an dem Standard-text nichts geändert...
    Einfach das Zahnrad angewählt und schwupps.... gleiche Fehlermeldung! :-(

    Soll ich aufgeben?

    AntwortenLöschen
  11. Hm, evtl. sl4a komplett runter hauen und neu installieren. Ansonsten kann ich leider nicht weiter helfen, da zumindest sl4a bei mir auf Anhieb funktioniert hat, kenn ich mich da nicht so gut mit aus.

    AntwortenLöschen
  12. Also hier nochmals News.....

    Habe SD-Karte Backup gemacht, alles gelöscht, Full Wipe, Rom drauf, SD Karte wieder bespielt alles wieder installiert und...... ES GEHT!!!!
    Kriege seit einer halben Stunde das Grinsen nicht mehr aus dem Gesicht!
    Hey und nur 3 Stunden Arbeit! Schön dass es noch verregnete Sonntage gibt! :-)

    Aber noch eine Frage....
    Für was gebe ich im Tasker Write File an?
    Habe dort zum ausprobieren eine andere Mailadresse eingegeben, die mit der im File nicht übereinstimmt... Es wird die Mailadresse in diesem File und nicht was ich in Tasker eingegeben habe genommen....

    Eigentlich wollte ich dies weil ich das Handy nicht bei der Arbeit nutzen darf und ein Mail ins Geschäft senden wollte....

    Aber diese Daten geben Sie mir natürlich nicht raus!

    Also ich möchte mich für deine Hilfe und die vielen Tipps bedanken.

    PS: Noch ein kleiner Tipp... Ein paar Bilder die du beim programmieren machen könntest, oder einige Tasks zum Download bereitstellen währen nicht übel!

    Gerade für Newbiis wie mich wäre dass sinnvoll!

    AntwortenLöschen
  13. Zu den Fragen:
    Im Write File gibst du Empfänger, Betreff und den Text ein. Das Skript sollte dies auch übernehmen, das macht es natürlich nur wenn bei Write File der gleiche Dateipfad und Name drin steht wie im Skript angegeben ist.

    EIn paar mehr Bilder sind sicher nicht verkehrt, werde ich demnächst drauf achten. Zum Download werde ich die Profile allerdings nicht anbieten, da ich 1. keinen Server hab und man in Blogger keine Dateien hochladen kann und 2. möchte ich mit meinem Blog erreichen das man sich mit Tasker beschäftigt und nicht nur blind fertige Profile runterlädt. Aber ich will natürlich versuchen in ZUkunft etwas Newbie-freundlichere Beträge zu erstellen :)

    AntwortenLöschen
  14. Also konischerweise klappt es immer bei Gmailadressen. Egal ob auf meine, oder auf die meiner Frau...... Nehme ich aber eine andere, klappt es nicht! Aber genau das wollte ich ja. Ich wollte an meine Geschäftsmailadresse diese senden. Kannst du das mal testen?

    Ausserdem.....
    Wie müsste ich das anstellen, das dieser Task nur dan ein Mail schickt, wenn ich im Geschäft bin.
    Ich habe scho ein Task für das Geschäft.
    Sorry für die viele Fragerei.....

    AntwortenLöschen
  15. Ach ja noch vergessen....
    Die eingabe der Mailadresse im Tasker klappt. Allerdings wie beschrieben nur mit gmail.

    AntwortenLöschen
  16. also ich kann emails auch an Arcor senden. Was nicht so einfach funktioniert ist eine mail von einer anderen addresse zu senden, meinst du das? Dafür gibts den Tip von FATlui.

    Damit nur emails im Geschäft versendet werden musst du das als Kontext hinzufügen. Da du schon einen Task dafür hast haust du da einfach Variable Set: %ARBEIT = 1. Als Exit Task dann Variable Set: ARBEIT = 0. In dem Profil wo das email senden drin ist, haust du als Kontext Variable Value: %ARBEIT ~ 1 rein. Um mehrere Kontexte hinzuzufügen einfach auf den schon vorhandenen klicken und dann auf Add Task.

    Frag ruhig, dafür ist der Blog ja da :)

    AntwortenLöschen
  17. Ok also ich weiss jetzt, wiso das mit der ersten Mailadresse die ich probiert habe nicht funktioniert hat.... Hat nichts mit Tasker usw. zu tun! :-)
    Nun klappt es auch das das Mail an meine Geschäftsadresse versendet wird!

    Allerdings mit dem Variabeln klappt es noch nicht wie es soll.
    Ich schreibe also im ersten "Task" Write File die Variable %XYZ ~ 1(Kann ich ja nennen wie ich will)

    Dort wo ich den Task mit dem Geschäft habe, bevor die Ausführungen wie Mute usw. kommen, habe ich den Variable Set %XYZ dort wo TO steht 1 eingefügt.
    Beim Exittask das gleiche mit null.

    Zuhause überprüft ob Task von Zuhause am laufen ist und Geschäft folgedessen nicht....
    Angerufen und....
    Es schreibt trotzdem eine Mail ins Geschäft!???

    Langsam musst du mir echt deine Kontonummer angeben! :-)
    Die vielen Fragen!

    Ach ja bei mir stürzt nach längerer Zeit des nichtgebrauchs von SLA4 das Programm ab.
    Könnte ich theoretisch nicht noch Kill App... wait 20 sekunden und dann load App SLA4 starten?
    Allerdings geht dies irgendwie nicht!
    Mein Telefon macht es mir echt nicht leicht! ;-)

    Nochmals ein grosses Dankeschön

    AntwortenLöschen
  18. Zu den Variablen:
    Die Abfrage ob %XYZ ~ 1 würd ich nicht in Write File machen, sondern für das gesamte Profil. Denn jetzt schreibt der zwar kein File aber der führt ja trotzdem die nachfolgenden Aktionen, als in dem File das Skript aus. SOmit wird auch eine MAil versendet. Damit das richtig funktioniert musst du die Abfrage von %XYZ als Kontext hinzufügen. Dazu klickst du im Hauptfenster auf deinen schon vorhandenen Kontext (ich nehm mal an "Missed Call" und dann auf "Add". Jetzt wählst du "State -> Variable Value" aus und trägst dort %XYZ equals 1" ein. Nun wird der ganze Task nur ausgeführt wenn du auch auf Arbeit bist. So sollte das auch funktionieren.

    Das SL4A abstürzt versteh ich nicht ganz, es wird ja eigentlich nur gestartet wenn du in Tasker "Run Skript" ausführst. Danach sollte es sich von selber wieder schließen. Bei mir läuft es auch nicht im Hintergrund. Wie bemerkst du das aufhänge? kommt eine Fehlermeldung oä? Ist das Symbol von SL4A bei dir die ganze Zeit in der Benachrichtigungsleiste?

    AntwortenLöschen
  19. Ok das mit der Variable funktioniert nun tadellos!
    SL4A stürzt unregelmässig ab! Vielleicht liegt es am Rom oder was weiss ich.
    Zu deiner Frage: Ja es kommt die schon mal weiter oben beschriebene Fehlermeldung:

    Prozess com.googlecode.android_scripting
    wurde unerwartet beendet.

    Habe nun ein Task, dass er SL4A einmal am Tag startet und dann beende ich es manuell wenn ich aufs Telefon schaue.

    Seither funktioniert alles wie es soll.
    Etwas mühsam aber ich versuche es mal noch indem ich diesen erweitere, indem er 30 Sekunden wartet und dann SL4A killt. Evtl. klappt es dann auch noch!

    Werde weiter testen.....

    PS: Habe deinen Eintrag mit dem Weckertask gesehen. Schönes Bild! :-)

    AntwortenLöschen
  20. Schön das es funktioniert :)
    Falls du irgendwann mal raus bekommst warum SL4A abstürzt kannstes ja mal posten :)

    AntwortenLöschen
  21. Moin,

    nachdem ich mein Desire im April mit einem Romupdate zerschossen hatte *grummel*, isses endlich wieder am laufen. Früher hatte ich "Locale" aber Tasker bietet einem einfach mehr Möglichkeiten.
    Zudem nutze ich eine Sony MBW150 Uhr. Diese hat ein kleines OLED-Display. Mittels der Software "OpenWatch" können nun Notifys an die Uhr geschickt werden - mittels eines Tasker-Plugins auch von Tasker aus.
    Und das bietet einem extrem viele Möglichkeiten für Hinweise an die Uhr - das mal nebenbei.

    Nun aber zu meiner Frage:
    Ich habe nicht immer WLAN oder Datenflat in Betrieb und hätte gerne das die ausgelösten Mails in eine Warteschlange kämen und verschickt werden sobald ich wieder WLAN oder Datenflat habe.
    Meinst Du das ist irgendwie realisierbar?

    Ansonsten danke für die verständlichen Tutorials - das macht einem den Einstieg in Tasker doch einfacher.

    CU - Dominik

    AntwortenLöschen
  22. jop das würde gehen. Ich würde es folgendermaßen realisieren.

    Der Task in dem die Mail versendet werden soll, schreibt nur ein extra Mail-Config File in welches den gleichen Aufbau wie das SKript-Konfig-File hat, aber mehrere Mails aufgenommen werden können. D.h. dafür musst du dir einen Splitter ausdenken den du bei Variable Split einsetzen kannst um die Mails später wieder zu separieren.
    Ein Extra-Profil überwacht das Konfig-File über Event->File->File Modified, als Task setzt die eine Variable zbsp %Mailout = 1 sobald es angelegt oder verändert wurde. Nun brauchst noch 2 Profile welche eine Variable zBsp %Daten = 1 setzen wenn du mit einem Mobilen Netz oder W-Lan verbunden bist, leider geht keine OR Verknüpfung, deswegen 2 Profile. IM Exit Task muss die Variable auch wieder 0 gesetzt werden.

    Ein weiteres Profil ist nun für das versenden der Nachrochten zuständig. Als Kontexte brauchst du:
    Variable Value %Mailout ~ 1
    Variable Value %Daten ~ 1

    Der zugehörige Task öffnet nun das Mail File und schreibt für jede hinterlegte Mail das Konfig File und startet das Skript. Die ließe sich mit einer For-Schleife realisieren.

    Erst mal nur eine grobe Idee, gibt sicherlich noch 1-2 Problemchen auf die du bei der Umsetzung stoßen wirst, aber evtl hilft dir das ja erst mal weiter. Wenn du nicht zurecht kommst, melde dich nochmal, dann baue ich in einer freien Minute das Profil mal und poste es... Aber probiers ruhig erst mal selber, man lernt ja auch was dabei :)

    AntwortenLöschen
  23. Hi,

    wow das nenn ich mal eine schnelle Antwort, bin begeistert!
    Ich bin im Moment auffer Arbeit ziemlich im Stress und Abends nicht mehr so motiviert um mich damit so genau auseinanderzusetzen.
    Im ersten Schritt schau ich erstmal das ich den Mailversand als solches zum laufen bekomme und dann mach ich mich an den Rest.

    Wobei ich die Separierung der Mails garnicht bräuchte. Es würde also reichen wenn Tasker die Mails einfach mit einem Trenner in eine einzige Mail packt und dann verschickt. Das müßte die Sache doch sicherlich vereinfachen, oder?

    So und zum Schluß noch ein Hinweis von mir.
    Zwei Profile sind leider falsch verlinkt:
    1. Nachrichten-Widget mit Zoom für SMS, Email und Trillian
    http://tasker-skripts.blogspot.com/2011/05/profil-nachrichten-widget-mit-zoom.html

    2. W-LAN automatisch schalten
    http://tasker-skripts.blogspot.com/2011/05/profil-w-lan-automatisch-schalten.html

    Da ist jeweils das "s" bei "skripts" falsch - kannste ja vielleicht mal ändern... :-)

    Ansonsten schonmal Danke für Deine Arbeit - macht einem den Einstieg in Tasker echt einfacher.
    PS: Einen RSS-Feed haste nicht im Blog, oder? Dann wäre ich nämlich immer auf dem laufenden.....

    CU - Dominik

    AntwortenLöschen
  24. jop dann brauchst du sogar nur die Mail-Konfig schreiben, bei ersten mal den Empfänger etc rein und jedes weitere mal einfach den nötigen Test hinten dran hängen. Und wenn die Mail irgendwann verschickt werden soll einfach das Skript starten und der ließt die Datei ein.

    Danke für die Hinweise.
    Einen Feed gibt es, sollte oben in der Adressleiste vom Browser ein entpsrechender Button angezeigt werden...

    AntwortenLöschen
  25. Super How-To, hat mir sehr geholfen!
    habs mal in meinem Blog verlinkt in dem ich meine Lösung zur Handy-Ortung per eMail beschrieben hab:
    http://juhkah.blog.de/2011/10/16/android-phonefinder-via-email-tasker-12020655/

    AntwortenLöschen
  26. Moin,

    mittlerweile funktioniert der eMailversand einwandfrei, allerdings suche ich noch einen Fehler, scheinbar existiert bei mir nicht die "mailout" Datei, so das diese eben auch nicht gelöscht werden kann.
    Hast Du da noch nen Tipp?
    ___________________________________________
    jop dann brauchst du sogar nur die Mail-Konfig schreiben, bei ersten mal den Empfänger etc rein und jedes weitere mal einfach den nötigen Test hinten dran hängen. Und wenn die Mail irgendwann verschickt werden soll einfach das Skript starten und der ließt die Datei ein.
    ___________________________________________

    Das heißt ich brauche im Grunde genommen zwei Profile.
    1. Ein Dateischreibeprofil, welches die SMS nacheinander in die Datei schreibt.
    Aber da dann theoretisch mit einer if-abfrage. So nach dem Motto "if" Datei leer, dann schreibe komplett, sonst nur den text hintendranhängen....?

    2. Ein Versandprofil, welches z.B. bei erkennen des eigenen WLAN-Netzes die Mail verschickt.

    CU - Dominik

    AntwortenLöschen
  27. na die "mailout" sollte ja die Datei sein auf die das sendemail.py Skript zugreift, also sollte diese auch existieren, evtl hast du bei der löschen Aktion einen falschen Pfad angegeben...
    _____

    Genau so. Das eine PRofil schreibt die mailout.conf, das zweite versendet die Mail dann und löscht die Datei.
    Per IF checkst du ob die Datei schon existiert, wenn nicht, muss der EMpfänger etc noch mit angegeben werden, ansonsten den neuen Text einfach hinten dran hängen.

    AntwortenLöschen
  28. Moin,

    so ich hab mal gebastelt und einen bzw. zwei Tasks gebaut mit denen die Sache so funktioniert wie ich mir das gewünscht hatte:
    1. Variable erstellen: %SMSWRITE = 0

    2. Task erstellen "Write SMS to File"
    - Write File -> mail.conf if %SMSWRITE = 0 (mit kompletten Mailempfänger) "Append off"
    - Write File -> mail.conf if %SMSWRITE = 1 "Append on"
    - Variable Set -> %SMSWRITE = 1

    3. Task erstellen "Send SMS to Mail"
    - Run Script -> sendemail.py if %SMSWRITE = 1
    - Wait -> 1 Minute if %SMSWRITE = 1
    - Delete File -> Tasker/mail.conf if %SMSWRITE = 1
    - Variable Set -> %SMSWRITE = 0 if %SMSWRITE = 1

    4. Profil erstellen "Write SMS to File"
    - Received "any" Text"
    - Task "Write SMS to File"

    5. Profil erstellen "Send SMS to Mail"
    - Wifi Connected -> Homenetwork WLAN
    - Task "Send SMS to Mail"


    Was macht das Script?
    Die variable %SMSWRITE steht auf 0, damit wird die Mail.conf beim ersten SMS Empfang komplett mit emailempfänger geschrieben. Danach wird die Vaiable auf 1 gesetzt.
    Bei einem weiteren Empfang wird der zweite Teil im Task genutzt und nur der SMS-Inhalt an die Textdatei drangehangen.
    Sobald das Handy im Heim-WLAN eingebucht ist, startet das zweite Profil, sendet die Mail und setzt nach dem löschen der mail.conf die Variable wieder auf 0.
    Nun kann wieder alles von vorne losgehen.
    Durch die if-Anweisung im zweiten Profil wird die Mail auch nur versendet wenn die Variable auf 1 steht.

    Sicherlich könnte man das auch noch besser oder kompakter realisieren, aber so funktioniert mein erster Alleingang sehr gut.

    CU - Dominik

    AntwortenLöschen
  29. Moin,

    jetzt hab ich aber doch noch einen Kanckpunkt festgestellt.
    Wenn das Handy schon im Home-WLAN eingebucht ist, wird die SMS nicht gleich verschickt.
    Es scheint so als wenn der Trigger "WLAN einbuchen" fehlt.
    Also ich suche noch eine Möglichkeit wie trotzdem die Mail verschickt wird, wenn ich schon im WLAN drin bin.....

    Aber ansonsten eine echt nette Sache.

    CU - Dominik

    AntwortenLöschen
  30. Jop das Problem ist folgendes:
    Du logst dich im WLan ein, deshalb will der eine Mail sende, aber es existiert noch keine mail.conf, d.h. der Task wird nicht ausgeführt. So lange du dich nicht neu wieder einloggst wird der Task auch nicht mehr ausgeführt.

    Da du ja eine Mail schreiben willst wenn SMSen eingegangen UND du im WLan bist brauchst du einen 2. Kontext und zwar am besten: "Variable Value: %SMSWRITE ~ 1".

    Alles klar? Dann sollte es funktionieren!

    AntwortenLöschen
  31. Hallo Leute,
    ich weiß, dass der Thread schon ein bissl älter ist, aber hab das ganze nun auch mal probiert. Alles funktioniert, nur will er keinen Text senden, egal was ich unter "body:" schreibe, die Mail bleibt immer ohne Text. Weiß jemand Rat?

    AntwortenLöschen
    Antworten
    1. aktiviere mal in der "Run Script" Aktion "Terminal", dann wird das Skript in einer Konsole ausgeführt und du siehst etwaige Fehlermeldungen...

      Löschen
  32. Hallo,

    habe das ganze jetzt auch bei mir ausprobiert und lief gleich auf Anhieb.
    Kann man eigentlich auch Dateianhänge in die Mail packen? (z.B. ein Foto, das gerade geschossen wurde, als Kontext und dann per Mail automatisch verschicken)
    Gruß Eddie

    AntwortenLöschen
    Antworten
    1. So wie das Python Skript jetzt aufgebaut ist nicht. Eventuell kann man es aber dahingehend ändern. Eigentlich wollte ich mich da auch mal näher mit beschäftigen, allerdings fehlt mir gerade die Zeit dazu...

      Löschen
  33. Hallo!

    Ich will hier nicht unbedingt nach so langer Zeit, wo dieses großartige Tutorial erstellt, klugscheissen....

    Aber:

    Im letzten Abschnitt muss es in der Config heissen:

    statt File -> Delete File

    File: temp/mailout.conf

    so File -> Delete File

    File: temp/mail.conf


    Du schreibst ja erst die mail.conf und dann wird sie wieder gelöscht.
    Eine mailout.conf gibts es in dem Sinn gar nicht, da ja auch bei der sendemail.py dies geändert wurde...

    Schönen Tag noch...

    AntwortenLöschen
  34. Guten Abend,
    es funktionier bei mir soweit alles wie es sein soll, jedoch habe ich ein Problem.
    Und zwar zeichnet Tasker bei mir in einem anderen Profil über den Tag Daten auf die ich zur Auswertung benötige.
    Diese Daten schreibt er in eine Textdatei.
    Ein Datensatz ist ungefähr 40 Zeichen lang.
    Jedem Datensatz ist eine Zeile gewidmet.

    Nun würde ich gerne, jede Nacht um 0 Uhr die gesammelten Daten an mich versenden.
    Dabei ist es wichtig, dass es immer ALLE Daten sind. Die Datei wächst also kontinuierlich.
    Nun funktioniert das die ersten paar Tage problemlos, jedoch scheint die Variable in die ich die Daten reinkopiere um sie dann in den Body der E-Mail zu schreiben irgndwie überzulaufen.
    Es kommt nurnoch "EFO" in der Mail im Body an.

    Und damit ist die Variable auch belegt.

    Gibt es eine Möglichkeit den Inhalt einer Datei direkt in die Zwischenablage zu kopieren und von da aus dann in das Script?
    Die Zwischenablage von android läuft ja nicht so schnell über.

    Viel dank schonmal

    AntwortenLöschen
    Antworten
    1. EOF steht für "End of File", das wird immer ausgegeben nachdem die letzte Zeile eingelesen wurde. Hat also nix mit überlaufen zu tun, scheinbar ließt du nur immer eine Zeile ein, deshalb steht immer nur die letzte Zeile in deiner Variablen, und die ist immer "EOF".

      Löschen
  35. super idee die sms weiterleitung.
    ich hab das ganze jetzt auch in die andere richtung implementiert.
    soll heißen ich kann auf das email antworten und es wird auf meinem
    handy als sms verschickt. damit kann ich jetzt mein tablet auch zum
    sms über meine sms flat nutzen. oder einfach von überall via gmail
    sms verschicken, genial. danke für die inspiration durch deinen artikel.

    lg bob

    AntwortenLöschen
    Antworten
    1. klingt cool, wie hast du das realisiert? Nutzt du einen bestimmten Betreff den du dann mit Tasker auswertest? Wenn du Lust hast kannst du es mir ja mal mailen, dann würde ich es als Artikel aufbereiten und hier veröffentlichen und natürlich dich als Initiator nennen wenn du das möchtest.

      Löschen
    2. ganz genau.
      es gibt ja leider für den android mail client kein event
      welches der tasker verarbeiten könnte. auch nicht für gmail.
      aber der k9mail client bringt eines mit (K9 Email Received).
      also meinen gmail account im k9 eingerichtet und im tasker mit einem split den betreff ausgelesen (body geht leider auch nicht).
      dann das ganze per tasker wieder als sms verschickt.
      der einfachheit halber, lasse ich mir schon in der anderen richtung
      die tel. nummer und das spliter zeichen im betreff senden.
      damit muss ich zum antworten nur noch den sms text an den betreff
      anhängen und fertig. letztendlich simpler als ich gedacht hätte und funktioniert einwandfrei :)

      lg bob

      Löschen
  36. Hallo,


    ich habe ein kleines plugin geschrieben mit dem man Emails direkt aus tasker ohne Umweg schreiben kann

    https://play.google.com/store/apps/details?id=com.stedo.sendsilentmail

    Falls jemandem die Lösung oben zu kompliziert ist hilft das Plugin eventuell weiter.

    AntwortenLöschen