Zur Speicheroptimierung, s. http://pythonwiki.pocoo.org/Allgemeine_Begriffepascalsv hat geschrieben:Ich würde aber gerne wissen, für was diese Slots gut sind:
Modul zum Senden von Emails (simplemail.py)
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Pascal!
Da ich das von Visual Basic her gewohnt war, dachte ich, das ist keine schlechte Idee und verwendete es. In der Zwischenzeit bin ich zum Schluss gekommen, dass es nur Zeitverschwendung ist. Ich habe dadurch mehr Aufwand beim Programmieren und schränke die Möglichkeiten einer Klasse mehr ein als notwendig ist. Die Verwendung von __slots__ hat, in meinen Augen, nur dann einen Vorteil, wenn ich die Klasse optimieren muss.
Würde ich heute das Modul neu schreiben, würde ich keine Slots mehr verwenden, da es sich ja nicht um eine Klasse handelt, die hochoptimiert mehrmals aufgerufen wird. Es war ein Versuch und es schadet ja auch niemandem.
Der Effekt, dass man schon beim Erzeugen der Klasse Daten übergeben kann, kommt alleine von der Methode __init__(). Diese Methode wird beim Instanzieren der Klasse aufgerufen. Ich habe das Modul so programmiert, dass es dem, der das Modul verwendet, überlassen wird, ob die Daten schon beim Instanzieren oder später übergeben werden.
mfg
Gerold
Danke! Ich habe aber gerade eben bemerkt, dass nur 10 kB des Modules angezeigt wurden. Deshalb habe ich soeben den Codehighlighter dieses Forums so umgestellt, dass man jetzt den kompletten Code sieht.pascalsv hat geschrieben:beindruckendes Modul!!
Das war mein erster Versuch mit den New-Style-Klassen von Python zu arbeiten. Ein Feature dieser Klassen ist, dass man die Namen der Variablen, die an die Klasseninstanz gebunden werden können, bekannt geben kann. Python warnt einen dann, wenn man im Code eine Instanzvariable verwendet, die noch nicht definiert wurde und Speicher wird auch gespart, da dadurch die Instanzvariablen anders verwaltet werden.pascalsv hat geschrieben:Ich würde aber gerne wissen, für was diese Slots gut sind
[...]
Ist es damit möglich, zur Initialisierung schon die entsprechenden Parameter mitzugeben?
Da ich das von Visual Basic her gewohnt war, dachte ich, das ist keine schlechte Idee und verwendete es. In der Zwischenzeit bin ich zum Schluss gekommen, dass es nur Zeitverschwendung ist. Ich habe dadurch mehr Aufwand beim Programmieren und schränke die Möglichkeiten einer Klasse mehr ein als notwendig ist. Die Verwendung von __slots__ hat, in meinen Augen, nur dann einen Vorteil, wenn ich die Klasse optimieren muss.
Würde ich heute das Modul neu schreiben, würde ich keine Slots mehr verwenden, da es sich ja nicht um eine Klasse handelt, die hochoptimiert mehrmals aufgerufen wird. Es war ein Versuch und es schadet ja auch niemandem.
Der Effekt, dass man schon beim Erzeugen der Klasse Daten übergeben kann, kommt alleine von der Methode __init__(). Diese Methode wird beim Instanzieren der Klasse aufgerufen. Ich habe das Modul so programmiert, dass es dem, der das Modul verwendet, überlassen wird, ob die Daten schon beim Instanzieren oder später übergeben werden.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!
Neues Feature:
Es wurden neue Klassen fuer CC-Empfaenger (Carbon Copy) und BCC-Empfaenger (Blind Carbon Copy) hinzugefuegt. Ab jetzt können Emails auch an CC und BCC gesendet werden. Wie das funktioniert sieht man in der Funktion ``testen()``
lg
Gerold
Neues Feature:
Es wurden neue Klassen fuer CC-Empfaenger (Carbon Copy) und BCC-Empfaenger (Blind Carbon Copy) hinzugefuegt. Ab jetzt können Emails auch an CC und BCC gesendet werden. Wie das funktioniert sieht man in der Funktion ``testen()``
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!
Reply-to (Antwort an) kann jetzt auch angegeben werden.
lg
Gerold
Reply-to (Antwort an) kann jetzt auch angegeben werden.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Servus Gerold
simplemail ist ein tolles Tool, die Dokumentation ist ausserdem vorbildlich.
Was m.E. fehlt, ist ein Header für das Datum, das kann nämlich den Spam-
Core negativ beeinflußen.
Das könnte dann etwa so implementiert werden:
from email.Utils import formatdate
und in send():
...
msg['Date'] = formatdate(time.time())
Desweiteren stellt sich die Frage, ob du nicht auch/stattdessen einen generischen
Header-Eintrag zulässt, also:
email = Email(......)
email.add_header('X-YZ', 'Wert')
email.send()
Gruß,
Karl.
simplemail ist ein tolles Tool, die Dokumentation ist ausserdem vorbildlich.
Was m.E. fehlt, ist ein Header für das Datum, das kann nämlich den Spam-
Core negativ beeinflußen.
Das könnte dann etwa so implementiert werden:
from email.Utils import formatdate
und in send():
...
msg['Date'] = formatdate(time.time())
Desweiteren stellt sich die Frage, ob du nicht auch/stattdessen einen generischen
Header-Eintrag zulässt, also:
email = Email(......)
email.add_header('X-YZ', 'Wert')
email.send()
Gruß,
Karl.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Karl!resi hat geschrieben:simplemail ist ein tolles Tool, die Dokumentation ist ausserdem vorbildlich. Was m.E. fehlt, ist ein Header für das Datum, das kann nämlich den Spam-
Core negativ beeinflußen.
Danke für dein Lob und deinen Hinweis. Was den Datums-Header betrifft, habe ich ihn damals sogar absichtlich weg gelassen, da bei meinen Tests der SMTP-Server das Datum automatisch hinzugefügt hat. (getestet mit Postfix) Mir ist es lieber, wenn der Server den Zeitstempel aufdrückt, da die Uhrzeit bei Servern -- glaube ich -- nicht so oft falsch geht wie bei den Clients.
Falls das allerdings andere SMTP-Server **nicht** automatisch machen, dann werde ich das Datum wohl doch dazu tun müssen.
@All: Was ich jetzt brauche, ist eine Antwort auf die Frage: "Gibt es SMTP-Server, die das Datum nicht automatisch hinzufügen?"
Wenn Ja, welche?
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Hi Gerold,
Bei mir hat der SMTP Server (exim4) es nicht automatisch hinzugefügt.
Möglicherweise könnte man den exim4 dahingehend konfigurieren, aber
wenn's dein Modul _auch_ kann, ist es ja kein Schaden
Oder wie gesagt, _beliebige_ weitere Header vom User dazufügen zu lassen.
Gruß,
Karl.
Bei mir hat der SMTP Server (exim4) es nicht automatisch hinzugefügt.
Möglicherweise könnte man den exim4 dahingehend konfigurieren, aber
wenn's dein Modul _auch_ kann, ist es ja kein Schaden
Oder wie gesagt, _beliebige_ weitere Header vom User dazufügen zu lassen.
Gruß,
Karl.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Karl!resi hat geschrieben:Bei mir hat der SMTP Server (exim4) es nicht automatisch hinzugefügt.
Ich wusst schon immer, warum ich bei Debian-Installationen Exim sofort durch Postfix ersetzt habe.
Da Exim leider durch die Verwendung in Debian ziemlich oft eingesetzt wird, bleibt mir nichts anderes übrig. Ich werde also das Datum als Header in simplemail einbauen.
Noch einmal vielen Dank für deinen Hinweis.
mfg
Gerold
Zuletzt geändert von gerold am Sonntag 28. Mai 2006, 19:04, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!
Änderungen:
* 2006-05-28 Gerold
* - Wortlaut des Headers "User-Agent" geändert.
* - Da nicht jeder SMTP-Server das Datum automatisch zum Header hinzufügt,
* wird ab jetzt das Datum beim Senden hinzugefügt.
* (Karl, danke für den wichtigen Hinweis.)
lg
Gerold
Änderungen:
* 2006-05-28 Gerold
* - Wortlaut des Headers "User-Agent" geändert.
* - Da nicht jeder SMTP-Server das Datum automatisch zum Header hinzufügt,
* wird ab jetzt das Datum beim Senden hinzugefügt.
* (Karl, danke für den wichtigen Hinweis.)
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Jens!jens hat geschrieben:@gerold: hast du keinen SVN Server auf dem du das Skript hinterlegen kannst??? Dann könnte ich es einfach mit svn-externals einbinden
Noch nicht, aber ich arbeite daran. Wahrscheinlich richte ich auf einem unserer Firmen-Internetserver ein Trac für solche Skripte ein.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Rebecca
- User
- Beiträge: 1662
- Registriert: Freitag 3. Februar 2006, 12:28
- Wohnort: DN, Heimat: HB
- Kontaktdaten:
Ist die Version im ersten Post die aktuelle?
Ist zwar nicht so wichtig, aber mir ist aufgefallen, dass an einer Stelle en und de vertauscht sind:
Ist zwar nicht so wichtig, aber mir ist aufgefallen, dass an einer Stelle en und de vertauscht sind:
Code: Alles auswählen
class AttachmentNotFound_Exception(Exception):
"""
en: Das uebergebene Attachment wurde nicht gefunden
de: Attachment not found
"""
pass
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Rebecca!Rebecca hat geschrieben:Ist die Version im ersten Post die aktuelle?
Ist zwar nicht so wichtig, aber mir ist aufgefallen, dass an einer Stelle...
Ja, im ersten Beitrag steht immer die aktuelle Version. Ich habe jetzt auch einen Hinweis darauf hinzugefügt.
Der Fehler wurde ausgebessert.
Code: Alles auswählen
* - Fehlerklassen von **SimpleMail_Exception** abgeleitet. Damit wird
* bei einem Fehler jetzt auch eine aussagekräftigere Fehlermeldung
* ausgegeben. Dabei habe ich auch die vertauschten Fehlermeldungen
* ausgetauscht. (Rebecca, danke für die Meldung.)
* - Da die Klassen **CCRecipients** und **BCCRecipients** sowiso von
* **Recipients** abgeleitet wurden, kann ich mir das Überschreiben
* der Initialisierung (__init__) und die Angabe der Slots sparen.
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Jens!jens hat geschrieben:@gerold: hast du keinen SVN Server auf dem du das Skript hinterlegen kannst??? Dann könnte ich es einfach mit svn-externals einbinden
Es entwickelt sich.
Ich (wir) richte(n) gerade ein öffentlich zugängliches Subversion-Repository und ein Trac für "simplemail" ein.
Allerdings würde ich das Projekt erst dann bei dir einbinden, wenn ich ein richtiges Paket daraus gemacht habe. Es wird sich in den nächsten Tagen noch einiges daran ändern.
Aber die URLs stehen schon mal fest.
Trac: http://gelb.bcom.at/trac/simplemail/
SVN: http://gelb.bcom.at/svn/pub/simplemail/
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Eine komplettes trac/SVN nur für simplemail??? Ist das nicht zuviel des guten
Ich meine, vielleicht legst du es besser so an:
Ich meine, vielleicht legst du es besser so an:
- simplemail/branches
simplemail/tags
simplemail/trunk
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi Jens!jens hat geschrieben:Eine komplettes trac/SVN nur für simplemail??? Ist das nicht zuviel des guten
Das passt schon so.
Ich mag es nicht, wenn sich alles mischt. Die Emails über Änderungen im Repository, das Wiki, die Timeline, die Roadmap, die Tickets,...
Ein Programm -- Ein Trac. So ist es mir am Liebsten.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
frage
kann ich ein bild in ein html email einfügen ?
mfg
gerhard
kann ich ein bild in ein html email einfügen ?
mfg
gerhard
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Gerhard!rogen hat geschrieben:kann ich ein bild in ein html email einfügen ?
Leider nur als Link zu einem Bild auf einem Internetserver. Bilder werden derzeit nicht in das Email eingebunden. Das steht aber ganz weit oben in meiner Wunschliste.
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Damaskus
- Administrator
- Beiträge: 995
- Registriert: Sonntag 6. März 2005, 20:08
- Wohnort: Schwabenländle
Hallo Gerold,
warscheinlich sehe ich den Wald vor lauter Bäumen nicht... aber ich ich sitze nun schon seit 2 Stunden an einem Fehler und komm nicht drauf wo der steckt...
folgender Code
erzeugt folgende Fehlermeldung
Gruß
Damaskus
warscheinlich sehe ich den Wald vor lauter Bäumen nicht... aber ich ich sitze nun schon seit 2 Stunden an einem Fehler und komm nicht drauf wo der steckt...
folgender Code
Code: Alles auswählen
simplemail.from_address = "u@a.de"
simplemail.from_caption = "ich"
simplemail.smtp_user = "xxxxxxx"
simplemail.smtp_password = "xxxxxxx"
simplemail.to_address = "u@a.de"
hat jemand dazu eine Idee?'Email' object has no attribute 'to_address'
Gruß
Damaskus
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Servus Damaskus!Damaskus hat geschrieben:Code: Alles auswählen
simplemail.from_address = "u@a.de" simplemail.from_caption = "ich" simplemail.smtp_user = "xxxxxxx" simplemail.smtp_password = "xxxxxxx" simplemail.to_address = "u@a.de"
to_address lässt sich nur beim Initialisieren übergeben. Wenn du im Nachhinein einen Empfänger hinzufügen möchtest, dann funktioniert da so:
Code: Alles auswählen
simplemail.recipients.add("to_address", "to_caption")
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.