-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Python Email versand

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647

    Python Email versand

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hi,

    ich weiss das hat nicht direkt mit dem Raspberry zu tun, aber ich hoffe ihr könnt mir trotzdem helfen.

    Ich habe mir ein kleines Pythonscript geschrieben, welches mir bei Ausführung meine externe IP per E-Mail senden soll. Klar könnte ich auch einen DynDNS dienst nehmen, das möchte ich aber nicht.

    Eigentlich funktioniert das Script, nur leider ist die E-Mail die bei mir ankommt immer leer. Weiss einer woran das liegt? Die IP wird korrekt ausgelesen, was ich durch den print befehl überprüft habe.

    Hier mein Code:
    Code:
    import smtplib
    import urllib2
    
    def get_ip():
            ip = urllib2.urlopen("http://automation.whatismyip.com/n09230945.asp").read()
            print "IP: ", ip
            return ip
    
    def send_ip():
            msg = get_ip()
            sender = "******@gmx.de" # Email des Absenders eintragen
            empfaenger = "******@gmx.de" # Email des Empfaenfers eintragen
            s = smtplib.SMTP("smtp.gmx.de") # SMTP-Server deines Email-Anbieters eintragen
            s.login("******@gmx.de", "******") # LogIn-Name und Passwort deines Email_Accounts eintragen
            s.sendmail(sender, empfaenger, msg)
            s.quit()
    
    if __name__ == "__main__":
            send_ip()
    Danke
    Gruß Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2011
    Ort
    Hannover
    Beiträge
    164
    Moin Daniel,

    ich bin jetzt nicht so der python-Guru/Freund, aber schau mal hier oder hier; kann sein, dass Du das From/To/Date/Subject-Geraffel noch in msg mit aufnehmen musst.

    Code:
    msg = 'From: %s\nTo: %s\nDate: %s\nSubject: %s\n%s' \
           % (sender, receiver, datestr, subj, bodyText)
    viele Grüße
    Andreas
    #define true ('/'/'/')
    #define false ('-'-'-')

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    Hi,

    danke für den Link, der hat mir etwas weitergeholfen.

    Ich kriege es jetzt hin das alle Informationen in der Absenderinformation in Thunderbird dargestellt werden. Das reicht zwar prinzipiell für meine Anwendung, ist aber nicht besonders schön.

    Code:
    import smtplib
    import urllib2
    
    def get_ip():
            ip = urllib2.urlopen("http://automation.whatismyip.com/n09230945.asp").read()
            #print "IP: ", ip
            return ip
    
    def send_ip():
            print "IP: ", get_ip()
            sender = "******@gmx.de" # Email des Absenders eintragen
            receiver = "******@gmx.de" # Email des Empfaenfers eintragen
            datestr = "datum" #ist nicht wichtig dient nur dem füllen des Strings
            subj = "new IP"
            bodyText = get_ip()
            s = smtplib.SMTP("mail.gmx.net") # SMTP-Server deines Email-Anbieters eintragen
            s.login("******@gmx.de", "******") # LogIn-Name und Passwort deines Email_Accounts eintragen
            msg = 'From: %s To: %s Date: %s Subject: %s %s' % (sender, receiver, datestr, subj, get_ip())
            s.sendmail(sender, receiver, msg)
            s.quit()
    
    if __name__ == "__main__":
            send_ip()
    Wenn ich in der Zeile "msg = ..." nach dem %s ein \n einfüge kommt komischerweise wieder eine leere Mail an. Hat noch jemand einen Tip?

    Danke
    Gruß Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2011
    Ort
    Hannover
    Beiträge
    164
    Ich habe mal unseren Mail-Server missbraucht, ich hoffe die Admins stehen nicht gleich mit der Axt in der Tür

    Code:
    msg = 'From: %s\nTo: %s\nDate: %s\nSubject: %s\n%s' % (sender, receiver, datestr, subj, get_ip())
    (Also: 4 mal "\n" !!)

    Kommt problemlos an; mit Absender, An, Betreff und Textbody. Lasse ich auch nur ein "\n" weg, gibt's leere Bodies oder auch "undisclosed recepients" als An oder Absender - auf jeden Fall merkwürdige Effekte.

    viele Grüße
    Andreas
    #define true ('/'/'/')
    #define false ('-'-'-')

  5. #5
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Schau mal hier:

    http://kampis-elektroecke.de/?page_id=2324

    Ich habe den E-Mail Versand über das Raspberry Pi mit einem Pythonskript, welches ich als Grundlage nehme, realisiert. Das Skript wird dann einfach aufgerufen und ein paar Parameter übergeben (kannst ja deine IP als Parameter definieren).
    Eventuell kannst du das Skript ja verwenden und "ausschlachten".
    Das Skript kannst du am Ende der Seite downloaden.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    Zitat Zitat von Kampi Beitrag anzeigen
    Schau mal hier:

    http://kampis-elektroecke.de/?page_id=2324

    Ich habe den E-Mail Versand über das Raspberry Pi mit einem Pythonskript, welches ich als Grundlage nehme, realisiert. Das Skript wird dann einfach aufgerufen und ein paar Parameter übergeben (kannst ja deine IP als Parameter definieren).
    Eventuell kannst du das Skript ja verwenden und "ausschlachten".
    Das Skript kannst du am Ende der Seite downloaden.
    Nur eine grundsätzliche Frage : Warum benutzt ihr nicht einfach mail ?
    Grüße,
    Daniel

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    28
    Beiträge
    3.517
    Blog-Einträge
    9
    Weil Mail nicht funktioniert.
    Hab es bereits darüber probiert aber ich glaube das ist nicht integriert.....zumindest kam immer sowas:

    bash: cannot found mail

    Auf die Idee bin ich ja auch bereits gekommen ^.^
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Roboter Experte Avatar von ePyx
    Registriert seit
    14.05.2008
    Ort
    Falkensee
    Beiträge
    700
    hmm, hab nichts direkt gefunden, aber hier geht es anscheinend.
    Grüße,
    Daniel

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    @danimath Das klappt bei mir nicht. Das komische ist wenn ich eine andere E-Mailadresse bei receiver angebe, kriege ich garkeine Mail.

    @Kampi: Das guck ich mir mal an danke.

    @ePyx: Mail kannte ich bisher noch nicht, deswegen hab ichs garnicht erst damit versucht

    - - - Aktualisiert - - -

    So Problem gelöst!

    Ich habe das Script von Kampi mit meinem vorhandenen "verheiratet". Hier das Ergebniss:

    Code:
    import smtplib
    import urllib2
    import datetime
    from email.mime.text import MIMEText
    
    def get_ip():
            ip = urllib2.urlopen("http://automation.whatismyip.com/n09230945.asp").read()
            return ip
    
    def send_ip():
            
            sender = "******@gmx.de" # Email des Absenders eintragen
            receiver = "******@gmx.de" # Email des Empfaenfers eintragen
            s = smtplib.SMTP("mail.gmx.net") # SMTP-Server deines Email-Anbieters eintragen
            s.login("******@gmx.de", "******") # LogIn-Name und Passwort deines Email_Accounts eintragen
    
            # Aktuelles Datum holen
            Datum = datetime.date.today()
            # Text
            my_ip = get_ip()
            print "IP: " + my_ip
            msg = MIMEText(my_ip)
            msg['Subject'] = 'Nachricht vom Raspberry Pi - %s' % Datum.strftime('%b %d %Y')
            msg['From'] = sender
            msg['To'] = receiver
    
            s.sendmail(sender, receiver, msg.as_string())
    
    if __name__ == "__main__":
            send_ip()
    Damit klappt es auch mit anderen E-Mailadressen als Empfänger.
    Jetzt muss ich nurnoch die IP in eine Datei schreiben und das Script soweit erweitern, das er mir nur bei einer IP Änderung eine E-Mail schickt. Da ich Unitymedia habe, kriege ich dann nur ca. alle 3 Monate eine E-Mail.

    Danke für eure Hilfe!
    Gruß Daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    So jetzt hab ich das schreiben der IP in eine Datei auch implementiert. Dadurch bekomme ich nurnoch bei Änderung der IP eine E-Mail.

    Hier der komplette Code:
    Code:
    import smtplib
    import urllib2
    import datetime
    from email.mime.text import MIMEText
    
    def get_ip():
            ip = urllib2.urlopen("http://automation.whatismyip.com/n09230945.asp").read()
            #print "IP: ", ip
            return ip
    
    def send_ip():
            sender = "******@gmx.de" # Email des Absenders eintragen
            receiver = "******@gmx.de" # Email des Empfaenfers eintragen
            s = smtplib.SMTP("mail.gmx.net") # SMTP-Server deines Email-Anbieters eintragen
            s.login("******@gmx.de", "******") # LogIn-Name und Passwort deines Email_Accounts ei$
    
            # Aktuelles Datum holen
            Datum = datetime.date.today()
            # Text
            my_ip = get_ip()
            print "IP: " + my_ip    #DEBUG
            msg = MIMEText(my_ip)
            # Betreff + Datum
            msg['Subject'] = 'Nachricht vom Raspberry Pi - %s' % Datum.strftime('%b %d %Y')
            # Absender
            msg['From'] = sender
            #Empfaenger
            msg['To'] = receiver
    
            s.sendmail(sender, receiver, msg.as_string())
            s.quit()
    
    if __name__ == "__main__":
            file = open("/home/******/cronscripts/myip.txt").read()
            myip = get_ip()
            if file[0:15] != myip:
                    file = open("/home/******/cronscripts/myip.txt","w")
                    file.write(myip)
                    file.close()
                    send_ip()
    Ausgeführt wird er mit einem Cronjob alle 5 Minuten. Dazu muss man mit dem Shellbefehl "crontab -e" die Crontab öffnen und folgendes unten einfügen:
    Code:
    #------------------------------------------------------
    5 * * * * python /home/*****/cronscripts/sendip.py
    #-------------------------------------------------------
    Evtl. hilft das ja noch dem ein oder anderen.

    Ich habe auch in einem Nebensatz gelesen, das wenn ein Programm welches mit einem Cronjob ausgeführt wird eine Ausgabe auf der Konsole erzeugt, diese per Mail an den jeweiligen benutzer gesendet wird. Das wäre natürlich klasse. Allerdings weiss ich nicht wo ich meine E-Mail daten angeben muss. Da muss ich mich dann erst einlesen.

    Danke für eure Unterstützung.
    Geändert von DanielSan (21.11.2012 um 12:41 Uhr)
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. GSM-Modul für SMS-Versand
    Von Bumbum im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 0
    Letzter Beitrag: 31.10.2012, 10:59
  2. email-adresse von ebay-händler erfragen
    Von Roboman93 im Forum Offtopic und Community Tratsch
    Antworten: 2
    Letzter Beitrag: 17.06.2011, 17:07
  3. STK500 + AVRDragon für nur 53€ incl. Versand
    Von lordludwig im Forum AVR Hardwarethemen
    Antworten: 0
    Letzter Beitrag: 22.04.2007, 16:37
  4. RS232 Empfang UND Versand auf einem Port?
    Von RHS im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 22.01.2007, 19:02
  5. Nun auch EMail über Roboternetz senden
    Von Frank im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 3
    Letzter Beitrag: 18.11.2005, 11:22

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •