Mails versenden in Version 2.4

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Duesselentchen
User
Beiträge: 19
Registriert: Dienstag 15. März 2011, 17:08

Hallöchen :)

Ich benutze Python 2.7 und habe folgendes script (auszug) geschrieben:

Code: Alles auswählen

import datetime
import os
import sys
import glob
import smtplib
from email.mime.text import MIMEText

[...]

job_number_list = [] #Ein Array mit Nummern - wird in [...] gefüllt

[...]

if job_number_list:
    
    listing = "Hier fehlt etwas: " + "\n"
    
    for job_number in job_number_list:
        listing = listing + "\n" + job_number
    
    
    # mail header    
    yesterday = datetime.date.today () - datetime.timedelta (days=day_deduction)
      
    msg = MIMEText(listing)     
    msg['Subject'] = 'Fehlende Dateien im Strudel (Eingangsdatum seit ' + \
                      str(yesterday.strftime ("%d.%m.%y")) + ')'    
    msg['From'] = mail_sender
    msg['To'] = ', '.join(mail_receiver)
    
    
    # server connection
    try:
        server = smtplib.SMTP(servername)
    except:
        print "Programmabbruch: Der Severname wurde falsch eingegeben"
        sys.exit(1)
    
    
    try:   
        server.sendmail(mail_sender, mail_receiver, msg.as_string())
    except:
        print "Programmabbruch: Die eMail-Adresse(n) wurden falsch eingegeben"
        sys.exit(1)
        
        
    server.quit()

sys.exit(0)
Das funktioniert auch alles, wie es soll!

AAAaaber:
Nun sollte das ganze Programm auf den Server und der kommt anscheinend mit dem Mimetext nicht zurecht.
Nun läuft auf dem Server Python 2.4 (ich wusste es vorher nicht - werde nun Python 2.4 bei mir installieren...) und ich habe bisher keine Möglichkeit gefunden, mein Script dafür umzuschreiben.
Gibt es hier jemanden, der mir dabei helfen kann?

Fehlermeldungen:

Traceback (most recent call last):
File "DateiInOrdner.py", line 54, in ?
from email.mime.text import MIMEText
ImportError: No module named mime.text


Nach Umbenennung der Methode auf import email.MIMEText:

Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'MIMEText' is not defined


Danke schon mal im Vorraus,
Duesselentchen
Duesselentchen
User
Beiträge: 19
Registriert: Dienstag 15. März 2011, 17:08

Okay - ich habe es nun Dank google Lösen können. :)

Für alle, die mal das gleiche Problem haben sollten:

Code: Alles auswählen

from email.MIMEText import MIMEText
deets

Ich wuerde dir TurboMail empfehlen:

http://www.python-turbomail.org/docs/

Das macht die ganze Sache einfacher, konfigurierbarer, und verlaesslicher. Emails - insbesonder Multipart/MIME - sind *eklig*. TurboMail haelt den Ekel fern. Wir haben damit zB gerade ein schickes neues HTML-Newsletter Ding gebaut, mit embedded Images (also Images, die angehangen sind, aber nicht als solche auftauchen - dafuer aber im HTML)
Duesselentchen
User
Beiträge: 19
Registriert: Dienstag 15. März 2011, 17:08

Ich brauche nun echt nichts besonderes - die Mails sollen verschickt werden, wenn Dateien fehlen und das einmal täglich. In der Mail steht dann nur eine Liste mit den Sachen die Fehlen.
Da ich aber aufgeschlossen bin ( :wink: ) bin ich dem Link schon gefolgt und probiere das gleich mal aus!
Danke für den Tipp - bei meiner google-recherche bzgl. Mails mit Python zu verschicken habe ich meist nur links zum Thema Mime gefunden...





\Nachtrag: Das mit dem Turbomail sah nun eigentlich nicht schwer aus, ABER: Ich bekomme die Bibliothek turbomail nicht eingebunden :oops: .
Ich habe versucht Turbomail herunterzuladen und einzubinden, jedoch klappt das nicht so, wie ich das mag (--> ImportError: No module named turbomail)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Alternativ kannst Du auch Gerolds Simplemail-Modul verwenden:
http://gelb.bcom.at/svn/pub/simplemail/ ... plemail.py

Ist nicht die aktuelle Version fürchte ich; die Links auf den Thread im Forum waren alle broken und auch EnTeQuAks trac-Link scheint tot zu sein. Evtl. hat jemand anderes hier im Forum einen Clone davon rumliegen?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
deets

Duesselentchen hat geschrieben: \Nachtrag: Das mit dem Turbomail sah nun eigentlich nicht schwer aus, ABER: Ich bekomme die Bibliothek turbomail nicht eingebunden :oops: .
Ich habe versucht Turbomail herunterzuladen und einzubinden, jedoch klappt das nicht so, wie ich das mag (--> ImportError: No module named turbomail)
Naja, was genau hast du denn versucht? Einfach nur runterladen geht nicht, es ist ja als EGG released, oder als Source - aber in beiden Faellen muss man es ja in die gewuenschte Python-Installation rein-installieren.

Und was das "ich brauch ja nicht viel" angeht - so faengt's immer an... und dann irgendwann muss man was mit Umlauten oder Attachments schicken, und erfindet Monster-Truck-Raeder neu.
Duesselentchen
User
Beiträge: 19
Registriert: Dienstag 15. März 2011, 17:08

- aber in beiden Faellen muss man es ja in die gewuenschte Python-Installation rein-installieren.
Ja, darin lag auch das Problem - mir den .egg - Dateien konnte ich nicht so viel anfangen. Habe versucht sie auszuführen, aber das gab nicht den erhofften Erfolg. Wie Installiere ich die denn rein? :K
Und was das "ich brauch ja nicht viel" angeht - so faengt's immer an... und dann irgendwann muss man was mit Umlauten oder Attachments schicken, und erfindet Monster-Truck-Raeder neu.
Unter normalen Umständen würde ich dir recht geben, nur würde mein Skript mit Attachments keinen Sinn machen etc.. Mein Hauptproblem ist aber, dass ich nun auch etwas dazuinstallieren muss, was mich auf dem Rechner recht wenig stört, auf dem Server aber schon ein wenig mehr - Mime muss ich nur importieren.
Nichts desto trotz mag ich es, zumindest auf dem Rechner, mal ausprobieren, da ich ja nach dem Skript nun nicht aufhöre weiter mit Python zu arbeiten ;)
deets

Duesselentchen hat geschrieben: Ja, darin lag auch das Problem - mir den .egg - Dateien konnte ich nicht so viel anfangen. Habe versucht sie auszuführen, aber das gab nicht den erhofften Erfolg. Wie Installiere ich die denn rein? :K
Es gibt verschiedene Moeglichkeiten, die einfachste ist, setuptools zu installieren - das sollte man eh haben - und dann "easy_install <das.egg>". Meistens reicht dann sogar "easy_install TurboMail", weil es automatisch dann das Egg runterlaed. Sich damit auszukennen lohnt sich, denn es dreht sich dabei um den Python-Package-Index (kurz PyPI oder auch CHeeseshop genannt), und der hat eine Menge schicker Sachen drin.
Duesselentchen
User
Beiträge: 19
Registriert: Dienstag 15. März 2011, 17:08

@deets: Danke für deine Antwort. Ich habe sie auch nicht ignoriert, nur frage ich mich langsam, wohin die Zeit hinrennt -.-
Ich werde mir aber deinen Rat zu Herzen nehmen!!!!
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

@Duesselentchen ich will dir nur mal sagen dass wenn du z. B. 2.7 drauf hast und dann 2.4 installierst, wird Python 2.4 alle Einstellungen so ändern dass dann die Skripte immer mit 2.4 aus geführt werden. Wenn das nicht so wär würd ich mir auch noch mal wieder 2.x zulegen.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
deets

@Py-Prog

Das Muster hier ist "letztes installiertes Python", und damit kannst du dann auch ganz einfach 2.4 und danach 2.7 installieren (und noch jeeeeede Menge andere davor, dazwischen und dahinter), und wenn du einfach mit dem aufhoerst, welches das aktive sein soll, dann ist alles "gut".

Aber im Grunde ist das eh egal, denn wenn du schon mehrere Python-Versionen draufhast, dann musst du eh ueberlegen, wie du die "richtige" verwendest. Ein Hoch auf die Kommandozeile.

[Edit: tautologie rausgeschmissen :)]
Zuletzt geändert von deets am Freitag 8. April 2011, 15:49, insgesamt 1-mal geändert.
BlackJack

@Py-Prog: So pauschal ist die Aussage einfach nur falsch.
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Gerolds simplemail Snippet:

http://www.python-forum.de/viewtopic.php?f=11&t=3158

Gruß
Damaskus
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

BlackJack hat geschrieben:@Py-Prog: So pauschal ist die Aussage einfach nur falsch.
Ich sag nur Windows. :wink:
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Benutzeravatar
Damaskus
Administrator
Beiträge: 995
Registriert: Sonntag 6. März 2005, 20:08
Wohnort: Schwabenländle

Auch unter Windows ist der Betrieb von mehreren Python Versionen gleichzeitig ohne Probleme möglich.
Ich hab auf jedem meiner Server/PC's/Notebook's von Python 2.5 bis 3.2 alle Versionen drauf.
Die einzigste Einschränkung bzw. Entscheidung die man eben treffen muss ist die, welche Python Version man als "Master" Version verwenden will.

Aber so wie in der Unix Welt man eben die Python Version über die Shebang Zeile auswählt so wählt man eben über den Skript aufruf in Windows die zu verwendende Version aus.

Oder mache ich etwa seit Jahren was falsch und merke es nicht? :wink:

Gruß
Damaskus
BlackJack

@Py-Prog: Auch unter Windows kann man mehrere Versionen parallel verwenden und ein Installer muss auch nicht zwangsläufig die Verknüpfungen einer vorherigen Installation verändern.
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Bei Windows schreiben Programme in die Registry unter anderen hinein welcher Dateityp mit was geöffnet werden soll, das wird dann überschrieben, und wenn nicht kann man nicht alles bequem per doppelklick öffnen.
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Py-Prog hat geschrieben:Bei Windows schreiben Programme in die Registry unter anderen hinein welcher Dateityp mit was geöffnet werden soll, das wird dann überschrieben, und wenn nicht kann man nicht alles bequem per doppelklick öffnen.
Ich finde zum Entwickeln ist "Doppelklick" die bei weitem unkomfortableste Variante.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Py-Prog
User
Beiträge: 673
Registriert: Dienstag 16. Februar 2010, 17:52
Wohnort: G:\ermany

Da hat man dann auch die F5-Taste aber beim verwenden wird das dann erst nervig.
Aber eigentlich kann ich mir das ja ehe sparen weil mich versteht eh niemand. (Oder ist das Absicht?)
Technik ist: wenn alles funktioniert und keiner weiß warum.
Wer Rechtschreibfehler findet darf sie behalten.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Py-Prog hat geschrieben:Aber eigentlich kann ich mir das ja ehe sparen weil mich versteht eh niemand. (Oder ist das Absicht?)
BlackJack hat doch geschrieben, dass man im Installer angeben kann die vorherige Verknüpfung nicht zu überschreiben. Der einzige der nicht versteht oder verstehen will bist höchstens du.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten