h1

Googlemail File Upload Skript

November 12, 2008

Angeregt durch das Bilder Upload Skript von Crackpod bin ich auch auf die Idee gekommen, eine Erweiterung für den Nautilus Datei Manager zu schreiben, mit der man per Mausklick Dateien sich selbst per Mail schicken kann. Dafür benutze ich meinen Googlemail Account, um von überall aus auf bestimmte Dateien zugreifen zu können.

Ihr könnt damit also per Rechtsklick auf eine Datei oder einen Ordner klicken und es dann hochladen lassen, ohne extra euer Mail Programm zu benutzen. Das sieht dann ungefähr so aus:

gmailuploadfile

Bei dem Skript müsst ihr nur eure Emailadresse einfügen, euren Usernamen (meist der Teil vor dem @) und euer Passwort. Wollt ihr nicht Googlemail benutzen, dann ändert einfach die Smtpadresse.

#!/usr/bin/python

# Script to send a File to my own Gmail Account
# Used as a Nautilus Script
# May also be used from command line or vim
import sys, smtplib, os
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import formatdate
from email import Encoders

# Helper Function
class folderToTarGz(object):
  nameExtension = 'gmailSendFile.tar.gz'

  def makeTarGz(self, folderName):
    import tarfile
    self.folderName = folderName
    tar = tarfile.open(folderName + self.nameExtension, 'w:gz')
    tar.add(folderName)
    tar.close()
    return folderName + self.nameExtension

  def cleanUp(self):
    import os
    os.remove(self.folderName + self.nameExtension) 

class GmailSendFile(object):
  mailadress = 'muster.mann@gmail.com'
  smtpserver = 'smtp.googlemail.com'
  username = 'muster.mann'
  password = 'secret'

  def send(self, files):
    # Gather information, prepare mail
    to = self.mailadress
    From = self.mailadress
    if len(files) <= 3: subjAdd = ','.join(files)
    if len(files) > 3: subjAdd = ','.join(files[:3]) + '...'
    subject = 'Dateiupload: ' + subjAdd
    msg = self.prepareMail(From, to, subject, files)

    #Connect to server and send mail
    server = smtplib.SMTP(self.smtpserver)
    server.ehlo() #Has something to do with sending information
    server.starttls() # Use encrypted SSL mode
    server.ehlo() # To make starttls work
    server.login(self.username, self.password)
    failed = server.sendmail(From, to, msg.as_string())
    server.quit()

  def prepareMail(self, From, to, subject, attachments):
    msg = MIMEMultipart()
    msg['From'] = From
    msg['To'] = to
    msg['Date'] = formatdate(localtime=True)
    msg['Subject'] = subject

    # The Body message is empty
    msg.attach( MIMEText("") )

    for file in attachments:
      #Is Folder?
      packed = False
      if os.path.isdir(file):
        packer = folderToTarGz()
        file = packer.makeTarGz(file)
        packed = True

      #We could check for mimetypes here, but I'm too lazy
      part = MIMEBase('application', "octet-stream")
      part.set_payload( open(file,"rb").read() )
      Encoders.encode_base64(part)
      part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file))
      msg.attach(part)
      #Delete created Tar
      if packed: packer.cleanUp()
    return msg

if __name__ == '__main__':
  gmail = GmailSendFile()
  gmail.send(sys.argv[1:])

Hier könnt ihr das Script downloaden.

Um das Skript zu installieren, speichert es einfach in einer Datei, macht es ausführbar:

$ sudo chmod +x gmailFileUpload.py

und speichert es im Pfad: ~/.gnome2/nautilus-scripts.

Viel Spaß damit!

One comment

  1. Geile Sache! Wirklich nützliches Script, dass gleich mal auf meinem PC landet😀



Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: