Seite 4 von 6

Verfasst: Montag 2. Juni 2008, 13:56
von jens
Habe mir jetzt dein Beispiel nicht richtig angesehen... Aber wie wäre es, das ganze im http://pypi.python.org/pypi zur Verfügung zu stellen. Evtl. sogar zur Aufnahme in Python vorschlagen?

Verfasst: Montag 2. Juni 2008, 14:04
von EnTeQuAk
pypi werd ich mich mal mit auseinandersetzen, aufnahme in python denke ich nicht. Zumindest werde ich nicht als Maintainer einspringen, ich hab nur mal ein wenig dran rumgebastelt :)
Wobei das ja immernoch gerolds modul ist *g*

Verfasst: Montag 2. Juni 2008, 16:55
von audax
Dann werde ich wohl demnächst schaun, wie zuverlässig das funzt ;)

Wenn demnächst ein Student nicht zu den Prüfungen angemeldet wird ist Gerold schuld :D

Verfasst: Montag 2. Juni 2008, 17:11
von lunar
jens hat geschrieben:Habe mir jetzt dein Beispiel nicht richtig angesehen... Aber wie wäre es, das ganze im http://pypi.python.org/pypi zur Verfügung zu stellen. Evtl. sogar zur Aufnahme in Python vorschlagen?
Siehe mein vorheriges Posting: Auch du kannst das in den pypi eintragen, wenn dir daran so viel liegt ;)

Wenn EnTeQuAk oder jemand anders das dann übernehmen will, steht dem ja auch nichts im Weg ;)

email in den imap Sent ordner kopieren

Verfasst: Dienstag 10. Juni 2008, 22:13
von Leon
Hi!

Ich find das simplemail sehr praktisch!
Allerdings verwende ich imap und wollte die gesendeten emails auch in meinem email-client und online sehen.
Deshalb habe ich ans simplemail.py noch folgenden text angefügt:

#
# Email nach gesendet kopieren...
#
imap_server = "imap.server.de"
im = imaplib.IMAP4(imap_server)
im.login(self.smtp_user, self.smtp_password)

im.select("Sent")
im.append("Sent", None, None, msg.as_string())

im.close()
im.logout()

Vielleicht hilfts ja jmd .-)

Leon

Verfasst: Montag 16. Juni 2008, 19:00
von snafu
Superteil: einfach zu bedienen und bei der Verwendung sehr gut lesbar. Soll simplemail denn auch auf Dauer nur zum Versand genutzt werden? Ansonsten wäre ja noch eine Methode gut, um unkompliziert gucken zu können ob neue Emails gekommen sind. :P

Verfasst: Montag 16. Juni 2008, 19:23
von Leonidas
snafu hat geschrieben:Ansonsten wäre ja noch eine Methode gut, um unkompliziert gucken zu können ob neue Emails gekommen sind. :P
Bitte nicht. Es gibt viel zu viele Methoden wie man auf Mails zugreifen kann: IMAP4, POP3, Maildir (+ Abwandlungen), MH, mbox (+ Abwandlungen), dass das definitiv übers ziel hinausschießen würde.

Wenn du so etwas willst, solltest du ein anderes Modul nehmen.
Zawinski's Law hat geschrieben:Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.

Verfasst: Donnerstag 19. Juni 2008, 11:37
von EnTeQuAk
Also zumindest ich habe nicht vor auch noch einen E-Mail Empfang einzubauen, da das dann auch imho den Sinn dieses Moduls übersteigt. Klein, Fein und leicht zu benutzen. Sollte ich da noch nen Empfang einbauen, am besten noch die von Leonidas genannten -- nein Danke.


Aber hey, es steht jedem Frei das Programm nach seinen Interessen zu erweitern :=)


Gruß, Christopher

Verfasst: Dienstag 29. Juli 2008, 11:12
von Klip
Vielen Dank für dieses tolle Modul, Gerold!

Funktioniert einwandfrei, nur leider stelle ich mich etwas blöd an. Ich habe eine Schleife, die die Empfänger aus einer Datei ausliest. Da man später ja Empfänger nur noch per recipients.add() hinzufügen kann, müsste ich dann den jeweils ersten Empfänger der Liste wieder entfernen.

Ich finde nur nicht raus, wie ich Zugriff auf die recipients-Liste kriege. Wenn ich probiere, die Liste direkt zu bearbeiten, bekomme ich eine Meldung, dass das Objekt len(), append(), pop(), usw. nicht kennt. Hier ein Beispiel:

Code: Alles auswählen

def send_mail(mail_to, attachment, path_to_here):
        email.recipients.add(mail_to)
        rec_list = email.recipients.get_list
        print len(rec_list)
Fehlermeldung:

Code: Alles auswählen

in send_mail
    print len(rec_list)
TypeError: object of type 'instancemethod' has no len()
Kann mir da vielleicht jemand auf die Sprünge helfen? Ich würde gerne die Empfängerliste bearbeiten irgendwie.

Ich hoffe, die Frage ist hier im Thread richtig aufgehoben.

Verfasst: Dienstag 29. Juli 2008, 12:07
von EyDu
Du musst die Funktion natürlich auch ausführen:

Code: Alles auswählen

rec_list = email.recipients.get_list()

Verfasst: Dienstag 29. Juli 2008, 13:27
von Klip
Oooh, die Klammern waren's. Vielen Dank!

Klappt tadellos! Habe die Recipients-Klasse jetzt um eine pop-Methode erweitert, damit sie mir alle Empfänger bis auf den gerade gebrauchten wieder rauswirft :)

EDIT: Habe jetzt auch die Attachment-Klasse etwas modifiziert, sodass man alle Dateianhänge, die bis dahin in der Liste waren, rausnehmen kann. Vielleicht kannst du es ja gebrauchen.

Code: Alles auswählen

    def pop_all(self):
        """Delete all attachments from list"""
        for i in range(len(self._attachments)):
                       self._attachments.pop()
Vielleicht geht das noch eleganter ^^ Funktionieren tut es jedenfalls.

Verfasst: Dienstag 29. Juli 2008, 14:05
von audax

Code: Alles auswählen

    def pop_all(self):
        """Delete all attachments from list"""
        self._attachments = []

Verfasst: Donnerstag 31. Juli 2008, 09:17
von EnTeQuAk
Ich hab die beiden Methoden mal eingebaut: http://svn.webshox.org/public/sandbox/simplemail.py


MfG EnTeQuAk

Verfasst: Samstag 7. März 2009, 16:16
von INFACT
Sehr geehrtes Python Forum,
Ich habe versucht mal ein bisschen mit SM herumzuspielen, aber es funktioniert nicht
Ich habe es mit mehreren Möglichkeiten versucht.
Der Fehler ist immer

Code: Alles auswählen

Traceback (most recent call last):
  File "C:/Dokumente und Einstellungen/Robin/Desktop/VIRUS/New Main/email.py", line 14, in <module>
    email.send()
  File "C:\Python\Lib\simplemail.py", line 343, in send
    smtp.connect(self.smtp_server)
  File "C:\Python\lib\smtplib.py", line 310, in connect
    raise socket.error, msg
error: (10061, 'Connection refused')
Mein Code:

Code: Alles auswählen

from simplemail import Email

email = Email()
email.from_address = "meine email@web.de"
email.smpt_server = "smtp.web.de"
email.smtp_user = "meine email"
email.smtp_password = "PASSWORT" 
email.to_address = ""
email.subject = "Test "
email.message = """Das ist die Nachricht
Noch ne Zeile"""
email.recipients.add("")
email.use_tls = True
email.send()
Kann mir jemand helfen?

Danke!

utf-8 Problem mit simplemail

Verfasst: Donnerstag 23. Juli 2009, 09:36
von sebste
Hallo Gerold!
Vielen Dank für dieses schöne Stück Software!
Ich verwende simplemail zum versenden von html mails. Bei einigen wenigen Empfängern kommen die Mails verstümmelt an (Umlaute und Sonderzeichen werden nicht oder falsch dargestellt) Mein verdacht war dass irgendwo eine angabe für das charset fehlt und die clients raten.

Was das coding angeht sieht es so aus:

Coding der Pythonmodule: utf-8 (ausser simplemail, das habe ich gelassen wie es ist)

content_subtype = "text/html"
content_charset = "iso-8859-1"
header_charset = "utf-8"

Im meta des HTML codes habe ich ebenfalls utf-8 als charset angegeben.

--
Erster Gedanke: content_charset ebenfalls auf utf-8 setzen, wäre ja naheliegend. wenn ich das tue, wird in der mail wird dann der größte Teil einfach abgeschnitten.
--
Irgend eine Idee was da schief läuft? Das Problem ist, ich kann den Fehler hier nicht nachstellen, da bei allen Rechnern mit verschiedenen os und clients alles gut aussieht. Ach ja, Die Empfänger mit dem Problem verwenden Outlook 2003 / SP3. Laut code der Antworten scheint auch ein Exchangeserver irgendwo beteiligt zu sein.

Liebe Grüße, Sebastian

Verfasst: Donnerstag 23. Juli 2009, 12:33
von sebste
Ok - bin mittlerweile ein stück weiter,
hatte den content mal explizit nach utf8 encoded, seither sieht es ganz gut aus. Getested habe ich es noch nicht. Allerdings gehe ich auch davon aus, dass am client irgendwelche komischen codings eingestellt sein könnten.

Komisch ist aber, dass der content immer base64 codiert wird, sobald ich content_charset auf utf-8 umstelle. quoted printable wäre natürlich schöner. ist das normal oder ein bug?

Verfasst: Donnerstag 23. Juli 2009, 17:20
von gerold
Hallo sebste!
sebste hat geschrieben:Ok - bin mittlerweile ein stück weiter
Da bin ich froh, denn ich kann mich im Moment nicht darum kümmern.
sebste hat geschrieben:Komisch ist aber, dass der content immer base64 codiert wird, sobald ich content_charset auf utf-8 umstelle. quoted printable wäre natürlich schöner. ist das normal oder ein bug?
Mit base64 kann jeder Email-Client umgehen, deshalb ist das für mich im Moment nicht wichtig. Ich werde mich sowiso in ein paar Monaten nochmal um simplemail kümmern. Ein kleiner Rewrite kann nicht schaden.

mfg
Gerold
:-)

Verfasst: Mittwoch 5. August 2009, 14:33
von lutz.horn
Das Modul gefällt mir.

Wie wäre es, es auf http://pypi.python.org/ zu veröffentlichen?

Verfasst: Mittwoch 5. August 2009, 21:10
von gerold
lutz.horn hat geschrieben:Wie wäre es, es auf http://pypi.python.org/ zu veröffentlichen?
Hallo lutz.horn!

Das ist auf meiner ToDo-Liste. ;-)

mfg
Gerold
:-)

Verfasst: Donnerstag 6. August 2009, 08:46
von snafu
gerold hat geschrieben:Ein kleiner Rewrite kann nicht schaden.
Allerdings. ;)

Ich würde Dinge wie Recipients.count() z.B. eher als Property lösen. Die ganze Klasse eignet sich IMHO dazu, von `list` zu erben. Für Attachements würde ich wahrscheinlich überhaupt keine eigene Klasse machen, sondern einfach ne Liste verwenden.