[Python] + [SMTP] (Notes und Exchange)

  • Guten Damen und Herren,


    Ich arbeite schon lange an einem Größeren Projekt was zum Großteil auch schon im betrieb ist.
    nun möchte ich aber auch noch Mails Versenden Leider finde ich im www zu viel dazu aber nichts was mir wirklich weiter hilft.


    Also das Problem meiner seits ist es das ich ein Python Script benötige womit ich eine SQL abfrage starte (Fertig) und wenn dort ein bestimmter wert erreciht ist dann soll eine Mail über dem im Netzwerk verfügbaren SMTP Server (Noch Notes) geschickt werden


    Wenn jemand fragen hat immer nur raus damit


    Mit Freundlichen Grüßen Florian Schulz

  • Hallo,


    was hast du denn schon probiert und was funktioniert nicht (=welche Fehlermeldung bekommst du)?


    Wenn Notes einen "normalen" SMTP-Server bereit stellt, sollte das kein Problem sein. Dazu gibt es bergeweise Doku im Netz und das passende Modul ist in der Python Standardinstallation enthalten.


    Gruß, noisefloor

  • Ich habe bis jetzt noch nichts probieren könne da mein Lieber notes Kollege meinen Server noch eintragen muss damit ich senden kann ^^ meine frage ist nur wie ein solches Script aussehen muss.Habe bis jetzt nur Sensor abfragen mit Python realisiert =) (gibt es da Hauseigene Funktionen oder muss ich ein fertiges geschriebenes Script nehmen ?

  • Ich verwende folgendes script:



    Es funktioniert mit einem gmail-account, dein Server und Port sollten da angepasst werden.

    Frank


    Nach 35 Jahren im IT business hab ich mit Raspi mal selbst zum Programmieren begonnen...
    Habe auch einen 3D-Drucker, eine CNC-Fräse und etwas Elektronik-Bastelei als Hobby

    Edited once, last by fjoke ().

  • Nun ja, deine permanenten Verlinkungen zum Thema <<EMail versenden>> führen zu noch unsauberen Codebeispielen. Da kommt das Beispiel von fjoke noch am ehesten an Python ran, auch wenn dort einige Fehler drin sind wie das Öffnen und nicht mehr Schliessen etc.


  • Der von mir verlinkte Beitrag zeigt mehrere Beispielcodes die alle funktionieren. In wiefern diese "unsauber" sind kann ich nicht nachvollziehen - es sei denn du bestehst wiedermal auf irgendwelche PEP's :-/ An alle Anfänger: Ihr müsst alle PEPs beachten ansonsten dürft ihr keine Python Scripts schreiben/nutzen/whatever

  • besten Dank für die "Anleitung". Funzt bei mir blendend. Ein zusätzliche Frage hätte ich:


    Wie kann ich in der Zeile

    Code
    def main():
        send_mail(["x@x.com", "asdf@sadf.sd"],
                  "Betreff",
                  "Text",
                  ['deine_datei_1.txt',
                   'deine_datei_2.txt']


    die zwei Dateien ersetzten durch z.B. alle *.jpg Dateien? Ist das machbar? Mit

    Code
    def main():
        send_mail(["x@x.com", "asdf@sadf.sd"],
                  "Betreff",
                  "Text",
                  [/var/www/images/*.jpg]


    geht es leider nicht

  • Es wird hier eine Liste von Dateien verlangt. Wenn du sämtliche Bilder eines Verzeichnisses versenden willst, dann musst du das Verzeichnis auslesen und dir die Dateinamen merken. Am besten schreibst du eine neue Funktion und gibts eine Liste mit den Bildern zurück.
    Ansatz im Beispiel:

    Code
    import os
    import glob
    
    
    def main():
        send_mail(["x@x.com", "asdf@sadf.sd"],
                   "Betreff",
                   "Text",
                   [os.path.basename(picture) for picture in glob.glob(os.path.join('var/www/images', '*.jpg'))]
  • Erst mal danke für den Code. Leider passiert nicht das gewünschte. Die Email kommt weiterhin an, jedoch ohne ein einziges Bild... Wenn ich alle einzeln mit Komma getrennt aufliste gehts. Aber nicht mit der Funktion.
    Gibt aber auch keine Fehlermeldung...

  • Mhh, tut mir leid, aber ich verstehe nicht ganz, was du mir damit sagen willst. Ich möchte keine Pfade angezeigt bekommen. Ich würde mir gern die Bilder schicken - oder hab ich grad was falsch verstanden?

  • Probiere es halt aus:

    Code
    print [os.path.basename(picture) for picture in glob.glob(os.path.join('var/www/images', '*.jpg'))]
    print [picture for picture in glob.glob(os.path.join('var/www/images', '*.jpg'))]


    https://docs.python.org/2/library/glob.html


    Normalerweise liegt in Python in der Kürze die Würze. Also man schreibt so wenig Code wie möglich. In diesem Beispiel eine List Comprehensions. Alternativ sähe es so aus (ohne Funktion), wobei ``glob.glob`` eh schon eine Liste zurück gib:

    Code
    def get_all_pictures():
        all_pictures = []
        for picture in glob.glob(os.path.join('var/www/images', '*.jpg')):
             all_pictures.append(picture)
         return all_pictures
    
    
    print get_all_pictures()


    Edit:

    Code
    def main():
        send_mail(["x@x.com", "asdf@sadf.sd"],
                   "Betreff",
                   "Text",
                   glob.glob(os.path.join('var/www/images', '*.jpg'))
        )