Bilder, Filme, Wissenschaft und überhaupt.
Dropbox: E-Mail Upload
Dropbox ermöglicht es auf einfachste Art und Weise Dateien zwischen Computern und Betriebssystemen zu synchronisieren. Außerdem hat man die Daten durch die Weboberfläche zu jeder Zeit und überall vefügbar.
Bis jetzt hat mir nur eine Funktion gefehlt, Dateien auch unterwegs per Handy hochzuladen. Außerdem möchte ich, dass andere Personen ganz einfach Dateien in meine Dropbox ablegen können.
Nach ein bisschen Gefrickel habe ich nun eine Lösung gefunden. Im Dropbox-Wiki gibt es bereits Scripte, die den Upload per E-Mail ermöglichen. Ich habe das Ganze nun mit einer seperaten E-Mailadresse von Google Mail realisiert, weil ich dort Mails recht einfach filtern und weiterleiten kann.
Scripte einrichten:
Die Voraussetzungen an den Webspace sind denkbar gering. Man benötigt lediglich PHP. Viel praktischer wird’s aber, wenn man Cronjobs zur Verfügung hat.
Zunächst braucht man zwei Scripte:
DropboxUploader.php (jeweils die neuste Version, also “latest”, wählen)
cronMe.php (beim Download als *.php speichern oder später umbenennen)
Die erste Datei braucht man nicht zu verändern. In der cronMe.php müsst ihr sowohl die Zugangsdaten zu eurem Dropbox-Account als auch die Daten eures E-Mailaccounts eingeben.
6 7 | $dropEmail = "username@domain.com"; $dropPass = "password"; |
username@domain.com und password ersetzt ihr durch eure Dropbox-Zugangsdaten.
9 10 | $emailToCheck = "email@domain.com"; $emailPass = "password"; |
Dort tragt ihr eure abzurufende E-Mailadresse und das zugehörige Passwort ein.
Soll das Script einen Google Mail Account auf E-Mails prüfen, war’s das schon.
Ansonsten müsst ihr zunächst die folgende Codezeile mit “//” auskommentieren oder löschen.
14 | $inbox = imap_open("{pop.gmail.com:995/pop3/ssl/novalidate-cert}INBOX", $emailToCheck, $emailPass); |
Außerdem müssen hier
17 | //$inbox = @imap_open ("{server:110/pop3}", $emailToCheck, $emailPass); |
die beiden Slashes am Anfang gelöscht werden und server muss durch die Adresse des POP-Servers eures E-Mailproviders ersetzt werden.
Schließlich noch beide Dateien auf den Webserver hochladen und Rechte auf 755 setzen.
Nun sollten die Scripte beim Aufruf der cronMe.php im Browser bereits das E-Mailpostfach auf neue Mails mit Anhang prüfen und diese zu Dropbox uploaden. Die Betreffzeile der Mails bestimmt, in welchen Ordner die Dateien landen. Anhänge aus E-Mails mit dem Betreff „Photos” landen z.B. im Photos Ordner von Dropbox. Dies funktioniert auch mit Unterordnen (Schreibweise: Ordner/Unterordner).
Gmail einrichten:
In den Einstellungen muss zunächst POP aktiviert werden, damit die Scripte die Mails überprüfen können. Das reicht an Einstellungen eigentlich schon. Ich habe darüber hinaus aber noch ein paar andere Einstellungen vorgenommen.
Ich habe einen neuen Filter eingerichtet. Dazu unter Filter auf Neuen Filter erstellen klicken. Dann lediglich einen Haken bei Mit Anhang setzen und beim nächsten Schritt habe ich Posteingang überspringen (Archivieren) und Als gelesen markieren ausgewählt. Somit sind alle Mails mit Anhang als gelesen markiert und aus dem Posteingang raus. Dort werden sie ja nicht benötigt, da sie vom Dropbox-Script bearbeitet werden. Damit man die Mails trotzdem wiederfindet kann man ein Label, z.B. „Dateien” anbringen.
Da ich meine Dropbox-Mailadresse ja hauptsächlich als Zwischenablage für unterwegs nutze, habe ich noch mehr in Gmail eingerichtet. So sollen alle Mails, die keinen Anhang haben (also nicht von Dropbox erfasst werden) in mein Evernote Notizbuch gespeichert werden.
Dazu einen neuen Filter erstellen und diesmal im ersten Schritt bei Mit diesen Wörtern -has:attachment eintragen. Damit erfasst der Filter alle E-Mails ohne Anhang. Im nächsten Schritt trage ich bei Weiterleiten an meine persönliche Mailadresse von Evernote ein. Die restlichen Einstellungen wie gehabt (diese Mails bekommen bei mir das Label „Notizen”). Hat man kein Evernote-Account kann man diese Mails natürlich auch anderweitig weiterleiten/bearbeiten.
Was haben wir bis jetzt erreicht?
Ihr könnt nun sowohl Dateien als auch Notizen an euren Dropbox-Mailaccount senden. E-Mailanhänge landen in eurem Dropbox-Account und werden so auf euren PC synchronisiert. Mails ohne Anhang werden als Notizen behandelt und in euer Notizbuch bei Evernote eingefügt, das ihr auch mit dem PC synchronisieren könnt.
Es bleibt nur ein Problem: Damit der Upload zu Dropbox auch tatsächlich stattfindet, muss die cronMe.php Datei aufgerufen werden. Das sollte nun automatisiert werden.
Cronjob:
Ein Cronjob sorgt dafür, dass Dateien auf dem Server zu bestimmten Zeiten automatisiert ausgeführt werden. Wie genau ihr bei eurem Webspace einen Cronjob richtig einrichtet, erfahrt ihr von eurem Provider. Nutzt ihr einen Cronjob muss in der cronMe.php eine weitere Änderung vorgenommen werden und zwar muss der Pfad zum temporären Verzeichnis nun absolut angegeben werden.
Statt
31 | $tempdir = "tempdir"; |
muss etwas derart dort eingetragen werden:
31 | $tempdir = "/var/www/user123/html/"; |
Habt ihr Webspace ohne Cronjobs, so könnt ihr auf den Service von Cronjob.de zurückgreifen. Dort braucht ihr nur die Adresse zu eurer cronMe.php Datei und das gewünscht Intervall der Aufrufe eintragen. Auch sind die eben beschriebenen Änderungen der cronMe.php nicht nötig. Allerdings solltet ihr in beiden PHP-Dateien gleich zu Beginn (nach <?php) folgenden Code ergänzen.
set_time_limit(0); ignore_user_abort(true);
Nun funktioniert die ganze Geschichte völlig automatisch. Falls noch Fragen vorhanden sind, bitte in die Kommentare damit …
| Dieser Beitrag wurde von Patrick am 21. Juni 2009 um 17:50 veröffentlicht und unter Feature, Tutorials abgelegt. Du kannst allen Antworten zu diesem Beitrag durch RSS 2.0 folgen. Du kannst eine Antwort schreiben oder einen Trackback von deiner eigenen Seite hinterlassen. |
vor 1 Jahr
Hallo Patrick,
ich habe ein Problem. Ich habe beide Scripts hochgeladen und eingerichtet wie beschrieben. Es ruft auch die Mails ab, aber nun das komische. Schicke ich von meinen Computer eine Mail erscheint der Anhang auch in Dropbox. Schicke ich eine Datei von meinem Drucker per Email wird sie zwar abgerufen erscheint aber nicht in der Dropbox. Füge ich im Script statt “tempdir” das Verzeichnis ein, wird alles gelöscht, selbst die Scripte. Hast Du ne Idee was man da machen kann?
Grüße,
Karolin
vor 1 Jahr
Das kann ich mir jetzt auch irgendwie nicht wirklich erklären. Wie werden die denn vom Drucker verschickt? Ist dort vielleicht automatisch irgendein Betreff vorgegeben?
Allerdings schreibt auch schon der Autor im Dropbox-Wiki, dass es Probleme mit einigen Dateitypen gibt.
Eine Alternative könnte Maildrop sein: http://sites.google.com/site/mjwarren86/home
Nur werden dort die Mails erst in die Dropbox geladen, wenn auf einem PC die Software ausgeführt wurde, und das ganze gibt es nur unter Windows.