Modul zum Senden von Emails (simplemail.py)

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

(Stichworte: Email versenden, Umlaute im Betreff, Coding, Attachments)

Hi!

Das Modul "simplemail" verwende ich zum Versenden von Emails.

Und so einfach ist es damit eine Email zu versenden:

Code: Alles auswählen

from simplemail import Email
Email(
    from_address = "absender@domain.at",
    to_address = "empfaenger@domain.at",
    subject = "Betreff",
    message = "Das ist der Nachrichtentext"
).send()
Weitere Beispiele finden sich im Quellcode in der Funktion testen().

Um dieses Forum zu entlasten, habe ich den Quellcode ausgelagert:

>>> Hier findest du python-simplemail <<<

mfg
Gerold
:-)
Zuletzt geändert von gerold am Freitag 15. Januar 2010, 15:52, insgesamt 15-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

(Stichworte: Email versenden, Umlaute im Betreff, Coding, Anhang, Anhänge, Attachment)

Hi!

- Es ist so weit -- simplemail.py kann jetzt auch mit Anhängen umgehen.
- (2005-09-29) Es gibt jetzt auch eine Möglichkeit, detailierte Rückmeldungen beim Versand an mehrere Adressen zu bekommen.
- (2005-11-11) Man kann sich jetzt auch am SMTP-Server mit Benutzername und Passwort anmelden.
- (2005-12-10) Schlampigkeitsfehler ausgebessert.

Es würde mich freuen, wenn du hier eine Nachricht hinterlässt, ob das Modul funktioniert oder ob es Fehler damit gibt.

mfg
Gerold
:-)
Zuletzt geändert von gerold am Mittwoch 22. März 2006, 15:50, insgesamt 9-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Einfaches Beispiel

Code: Alles auswählen

# Einfaches Beispiel
from simplemail import Email

email = Email(
    from_address = "von_adresse@domäne",
    to_address = "empfaenger@domäne"
)
email.subject = "Das ist der Betreff mit Umlauten (öäüß)"
email.message = "Das ist der Nachrichtentext mit Umlauten (öäüß)"
email.send()
Noch einfacheres Beispiel

Code: Alles auswählen

# Noch einfacheres Beispiel
from simplemail import Email
Email(
    from_address = "von@domäne",
    to_address = "empfänger@domäne",
    subject = "Das ist der Betreff",
    message = "Das ist der Nachrichtentext"
).send()
lg
Gerold
:-)
Zuletzt geändert von gerold am Sonntag 2. Juli 2006, 17:06, insgesamt 3-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Komplexeres Beispiel mit Umlauten und Anhaengen

Code: Alles auswählen

# Komplexeres Beispiel mit Umlauten und Anhaengen
from simplemail import Email

email = Email()

# Ansender
email.from_address = "von@domäne"
email.from_caption = "Gerolds Server"

# Empfaenger
email.recipients.add("gerold@gp-server.gp", "Gerold Penz (lokal)")
email.recipients.add("gerold.penz@tirol.utanet.at", "Gerold Penz (utanet)")

# Betreff
email.subject = "Komplexeres Beispiel"

# Nachricht
email.message = \
    "Das ist ein etwas komplexeres Beispiel\n" + \
    "\n" + \
    "Hier steht normaler Text mit Umlauten (öäüß).\n" + \
    "Groß kann man sie auch schreiben -- ÖÄÜ.\n" + \
    "\n" + \
    "mfg\n" + \
    "Gerold\n" + \
    ":-)"

# Anhaenge
email.attachments.add_filename("/home/gerold/font_shadow_fuzzy.jpg")
email.attachments.add_filename(
    "/home/gerold/GEROLD/Bilder und Videos/Eigene Fotos/Glock 19 auf Holzplatte.JPG"
)

# Senden
if email.send():
    print "Nachricht gesendet."
else:
    print "Die Nachricht wurde nicht versendet."
mfg
Gerold
:-)
Zuletzt geändert von gerold am Sonntag 2. Juli 2006, 17:08, insgesamt 3-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

HTML-Email

Code: Alles auswählen

# HTML-Email
from simplemail import Email

email = Email(
    from_address = "server@gp-server.gp",
    to_address = "gerold@gp-server.gp"
)
email.subject = "Das ist ein HTML-Email"
email.content_subtype = "html"
email.message = \
"""
<h1>Das ist die Überschrift</h1>
<p>
  Das ist ein <b>kleiner</b><br />
  Absatz.
</p>
<p>
  Das ist noch ein <i>Absatz</i>.
</p>
<p>
  mfg<br />
  Gerold<br />
  :-)
</p>
"""
email.send()
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Gast

gerold hat geschrieben:Komplexeres Beispiel mit Umlauten und Anhaengen

Code: Alles auswählen

# Komplexeres Beispiel mit Umlauten und Anhaengen
from simplemail import Email

email = Email()

# Ansender
email.from_address = "server@gp-server.gp"
email.from_caption = "Gerolds Server"

# Empfaenger
email.recipients.add("gerold@gp-server.gp", "Gerold Penz (lokal)")
email.recipients.add("gerold.penz@tirol.utanet.at", "Gerold Penz (utanet)")

# Betreff
email.subject = "Komplexeres Beispiel"

# Nachricht
email.message = \
    "Das ist ein etwas komplexeres Beispiel\n" + \
    "\n" + \
    "Hier steht normaler Text mit Umlauten (öäüß).\n" + \
    "Groß kann man sie auch schreiben -- ÖÄÜ.\n" + \
    "\n" + \
    "mfg\n" + \
    "Gerold\n" + \
    ":-)"

# Anhaenge
email.attachments.add_filename("/home/gerold/font_shadow_fuzzy.jpg")
email.attachments.add_filename(
    "/home/gerold/GEROLD/Bilder und Videos/Eigene Fotos/Glock 19 auf Holzplatte.JPG"
)

# Senden
if email.send():
    print "Nachricht gesendet."
else:
    print "Die Nachricht wurde nicht versendet."
mfg
Gerold
:-)
Hallo erstmal,
danke für dieses Script :D
leider habe ich noch das ein oder andere Problemchen:
ich habe den Quellcode von simplemail in eine neue Datei Namens simplemail.py eingefügt und abgespeichert.
Im selben Ordner habe ich eine Datei sendmail.py erzeugt und den Code des o.g. Beispiels eingefügt und abgespeichert.
In der simplemail.py habe ich dann noch den SMTP Server eingetragen und in der sendmail.py meinen Absender und einen Empfänger ausgetauscht.

Wenn ich jetzt die sendmail starte, bringt er mir immer sofort diesen Fehler:
Traceback (most recent call last):
File "G:\zv\dvo\WWW\HIS-Massenmail\sendmail.py", line 29, in ?
if email.send():
File "G:\zv\dvo\WWW\HIS-Massenmail\simplemail.py", line 416, in send
smtp.connect(self.smtp_server)
File "C:\PROGRA~1\Python23\lib\smtplib.py", line 302, in connect
raise socket.error, msg
error: (10061, 'Connection refused')
Wo liegt mein Fehler ?
MfG
Buschdel
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Anonymous hat geschrieben: danke für dieses Script :D
[...]
ich habe den Quellcode von simplemail in eine neue Datei Namens simplemail.py eingefügt und abgespeichert.
Im selben Ordner habe ich eine Datei sendmail.py erzeugt und den Code des o.g. Beispiels eingefügt und abgespeichert.
In der simplemail.py habe ich dann noch den SMTP Server eingetragen und in der sendmail.py meinen Absender und einen Empfänger ausgetauscht.
Hi Buschdel!

Normalerweise versucht "simplemail.py" "localhost" als SMTP-Server zu verwenden. Wenn du lokal keinen SMTP-Server laufen hast, dann must du mit dem Parameter "smtp_server" einen anderen Server verwenden. Ich würde den Server *nicht* direkt im "simplemai.py"-Modul ändern.

Code: Alles auswählen

email = Email(
    smtp_server = "localhost"
)
Musst du dich evt. an deinem SMTP-Server anmelden, um senden zu können?

Code: Alles auswählen

email = Email(
    smtp_server = "localhost",
    smtp_user = "benutzername",
    smtp_password = "passwort
)
Vielleicht ist dieser Server so eingestellt, dass du dich zuerst an die Mailbox anmelden musst. Dann funktioniert dieses Skript sicher nicht.

mfg
Gerold
:-)

PS: Ich würde mein Skript nicht "sendmail.py" nennen. Das könnte sich evt. mal mit einem eingebauten Namen schlagen.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab dein simplemail testweise in PyLucid rein gepackt...

Lokal auf meinem Server läuft es, ich hab auch eine email verschicken lassen, die auch laut return-status verschickt wurde... Aber eigentlich hab ich auf dem Ubuntu mich nicht großartig mit eMail Server beschäftigt... Also es ist eigentlich nix dafür eingerichtet... Die email ist bisher auch nicht angekommen...

Kann man da noch mehr Status Informationen bekommen, ob die Email auch wirklich verschickt wurde???

Dann hab ich's mal bei Hosteurope versucht... Zu erstmal läuft das ganze nicht so einfach mit Python 2.2.1 :(
Aber naja, ich hab ja eh schon Backports eingebaut und diese dann mit ./Lib/email/* erweitert... Dennoch klappt es nicht. Ich erhalte einen SyntaxError in Iterators.py ???
SyntaxError: invalid syntax (Iterators.py, line 19)
__doc__ = 'Invalid syntax.'
__getitem__ = <bound method SyntaxError.__getitem__ of <exceptions.SyntaxError instance at 0x82d6a24>>
__init__ = <bound method SyntaxError.__init__ of <exceptions.SyntaxError instance at 0x82d6a24>>
__module__ = 'exceptions'
__str__ = <bound method SyntaxError.__str__ of <exceptions.SyntaxError instance at 0x82d6a24>>
args = ('invalid syntax', ('PyLucid_python_backports/email/Iterators.py', 19, 14, ' yield self\n'))
filename = 'PyLucid_python_backports/email/Iterators.py'
lineno = 19
msg = 'invalid syntax'
offset = 14
print_file_and_line = None
text = ' yield self\n'
Anscheinend irgendwas mit yield... Der Teil aus Iterators.py:

Code: Alles auswählen

def walk(self):
    """Walk over the message tree, yielding each subpart.

    The walk is performed in depth-first order.  This method is a
    generator.
    """
    yield self
    if self.is_multipart():
        for subpart in self.get_payload():
            for subsubpart in subpart.walk():
                yield subsubpart
EDIT: OK, wenn ich in Iterators.py ein "from __future__ import generators" einfüge geht's weiter, mit dem nächsten Fehler:
NameError: global name 'basestring' is not defined
__doc__ = 'Name not found globally.'
__getitem__ = <bound method NameError.__getitem__ of <exceptions.NameError instance at 0x832d6ac>>
__init__ = <bound method NameError.__init__ of <exceptions.NameError instance at 0x832d6ac>>
__module__ = 'exceptions'
__str__ = <bound method NameError.__str__ of <exceptions.NameError instance at 0x832d6ac>>
args = ("global name 'basestring' is not defined",)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
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: Kann man da noch mehr Status Informationen bekommen, ob die Email auch wirklich verschickt wurde???
Ich werde meinen Code noch einmal durchgehen und mehr Statusmeldungen über den Versand zurück geben.
jens hat geschrieben: Aber naja, ich hab ja eh schon Backports eingebaut und diese dann mit ./Lib/email/* erweitert... Dennoch klappt es nicht. Ich erhalte einen SyntaxError in Iterators.py ???
Hier stehe ich an -- mit diesen Meldungen kann ich nichts anfangen. Da kann ich dir leider nicht weiter helfen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab mir jetzt eine mini-Klasse gebastelt, mit der es geht's:

Code: Alles auswählen

class email:
    def send(self, to, subject, text):
        import time, smtplib
        from email.MIMEText import MIMEText

        msg = MIMEText(
            _text = text,
            _subtype = "plain",
            _charset = "UTF-8"
        )
        msg['From'] = "auto_mailer@blablabla"
        msg['To'] = to
        msg['Subject'] = subject
        # Datum nach RFC 2822 Internet email standard.
        msg['Date'] = time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime())
        msg['User-Agent'] = "PyLucid (Python v%s)" % sys.version

        s = smtplib.SMTP()
        s.connect()
        s.sendmail(msg['From'], [msg['To']], msg.as_string())
        s.close()
Ich brauche eigentliche eh nur plain-text Nachrichten...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gerold hat geschrieben: Ich werde meinen Code noch einmal durchgehen und mehr Statusmeldungen über den Versand zurück geben.
Hi!

Ich habe den Code um mehr Statusmeldungen erweitert. Generell kann man aber von folgender Aussage ausgehen:

Wenn eine Email an *einen* Empfänger geschickt wird und dabei kein Fehler auftritt, dann hat der SMTP-Server die Email akzeptiert oder zumindest stillschweigend angenommen.
Wenn die Email trotzdem nicht an ein Postfach ausgeliefert wird, dann sollte man sich die Logfiles des SMTP-Servers ansehen.

Schickt man ein Email an *mehrere* Empfänger, dann tritt kein Fehler auf, wenn die Email an mindestens einen Empfänger geschickt werden konnte. Um herauszufinden, ob auch wirklich alle Empfänger das Email zugesandt bekommen haben, kann man jetzt zusätzlich das Attribut `statusdict` abfragen.

Code: Alles auswählen

if email.statusdict:
    print "Fehler bei mind. einem Empf."
    print email.statusdict
else:
    print "OK"
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
ChrisSek
User
Beiträge: 10
Registriert: Samstag 8. Mai 2004, 13:06
Wohnort: Bremen
Kontaktdaten:

Hab' mir das Modul mal angeschaut. Klappte bei mir mit dem Anmelden bei meinem Provider nicht. Habe deshalb folgende Zeilen geändert:

Code: Alles auswählen

smtp = smtplib.SMTP() 
# Geändert zu
smtp = smtplib.SMTP(self.smtp_server)
und

Code: Alles auswählen

smtp.connect(self.smtp_server)
# Geändert zu
smtp.login(self.smtp_user, self.smtp_password)
Dann Email mit dem passenden Konstruktor aufrufen - Klappt super :)

Wie sieht's mit dem Copyright aus? Darf ich das Modul in nen Programm von mir integrieren? Ist echt ne nette Lösung!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

ChrisSek hat geschrieben:Wie sieht's mit dem Copyright aus? Darf ich das Modul in nen Programm von mir integrieren? Ist echt ne nette Lösung!
Im Header steht doch, dass es unter LGPL steht. Also: ja.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ChrisSek
User
Beiträge: 10
Registriert: Samstag 8. Mai 2004, 13:06
Wohnort: Bremen
Kontaktdaten:

Leonidas hat geschrieben: Im Header steht doch, dass es unter LGPL steht. Also: ja.
Ups, hab ich total überlesen. Sorry und danke :)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

ChrisSek hat geschrieben:Hab' mir das Modul mal angeschaut. Klappte bei mir mit dem Anmelden bei meinem Provider nicht.
[...]
Dann Email mit dem passenden Konstruktor aufrufen - Klappt super :)

Wie sieht's mit dem Copyright aus? Darf ich das Modul in nen Programm von mir integrieren? Ist echt ne nette Lösung!
Hi ChrisSek!

Natürlich darfst du es verwenden. Deshalb habe ich es hier rein gestellt und es freut mich, wenn es verwendet wird.

Das mit der Authentifizierung werde ich demnächst einbauen. Da sieht man wieder, wie schnell etwas vergessen wird, wenn man etwas selbst nicht braucht. :shock:

Danke für den Hinweis. :D

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi!

Der Fehler wurde ausgebessert. --> Man kann sich jetzt mit Benutzername und Passwort am SMTP-Server anmelden.

Die Tests werden jetzt nicht mehr automatisch ausgeführt, wenn man das Modul ausführt. Das passiert jetzt nur mehr, wenn man als Parameter "test" übergibt.

Ich plane auch, das Modul in nächster Zeit so zu erweitern, dass man es direkt über die Kommandozeile aufrufen und die Emailadresse, usw. als Parameter übergeben kann.

Ebenfalls ist ein Skript geplant, das Emails, mit einem vorgegebenen Betreff, von einem POP-Server abholt, in einen Ordner speichert und daraufhin ein Programm aufruft, dem der Speicherort der Emails übergeben wird. Eventuell wird es ja auch andersrum. --> Alle Emails abholen und je nach Text im Betreff ein anderes Programm aufrufen. Das werde ich heute oder morgen entscheiden.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gerold hat geschrieben: Ich plane auch, das Modul in nächster Zeit so zu erweitern, dass man es direkt über die Kommandozeile aufrufen und die Emailadresse, usw. als Parameter übergeben kann.

Ebenfalls ist ein Skript geplant, das Emails, mit einem vorgegebenen Betreff, von einem POP-Server abholt, in einen Ordner speichert und daraufhin ein Programm aufruft, dem der Speicherort der Emails übergeben wird. Eventuell wird es ja auch andersrum. --> Alle Emails abholen und je nach Text im Betreff ein anderes Programm aufrufen.
Hi!

Es sieht derzeit recht schlecht mit meiner Zeit aus. Wird wohl noch ein paar Monate dauern, bis ich dazu komme. :cry:

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi @ all!

* 2005-12-10 Gerold
* - Schlampigkeitsfehler ausgebessert. Es wurde ein Fehler gemeldet, wenn
* man beim Initialisieren der Klasse Email auch den Dateinamen eines
* Attachments übergeben hatte. Es war ein Unterstrich zu viel, der
* Entfernt wurde.

Der Code wurde ausgebessert.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gerold hat geschrieben: Ebenfalls ist ein Skript geplant, das Emails, mit einem vorgegebenen Betreff, von einem POP-Server abholt, in einen Ordner speichert und daraufhin ein Programm aufruft, dem der Speicherort der Emails übergeben wird. Eventuell wird es ja auch andersrum. --> Alle Emails abholen und je nach Text im Betreff ein anderes Programm aufrufen.
Hi @ all!

Falls ein Programm gesucht wird, mit dem man Emails von einem POP3- oder IMAP-Server abholen kann, dann sollte man sich unbedingt auch **getmail** ansehen. http://pyropus.ca/software/getmail/
Es können auch Regeln definiert werden, die bestimmen, wohin und wie die Email gespeichert werden soll. Ebenfalls kann ein Filter eine Email an ein externes Programm weiterreichen.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
pascalsv
User
Beiträge: 16
Registriert: Samstag 7. Januar 2006, 15:45

Hallo Gerold,

beindruckendes Modul!! Ich würde aber gerne wissen, für was diese Slots gut sind:

Code: Alles auswählen

class Email(object):
    __slots__ = (
...
Ist es damit möglich, zur Initialisierung schon die entsprechenden Parameter mitzugeben? Wie liest man diese Slots aus? Ich würde dann nämlich in der Send-Methode diese Slots auslesen und einsetzen...

Gruß,

Pascal
Life is short - don't buy green bananas...
Antworten