Code: Alles auswählen
import rfc822, string, sys, base64, os, os.path, mimetypes
import smtplib, MimeWriter, StringIO
*nixraff* Wer ist schuld?
Code: Alles auswählen
import rfc822, string, sys, base64, os, os.path, mimetypes
import smtplib, MimeWriter, StringIO
Code: Alles auswählen
import rfc822, string, sys, base64, os, os.path, mimetypes
import smtplib, MimeWriter, StringIO
class faktMimeMail:
def __init__(self, host="localhost"):
self.body = "This is a multi-part message in MIME Format"
self.text = "This is a multi-part message in MIME Format"
self.htmlbody = ""
self.to = []
self.frm = ""
self.rplto = ""
self.subject = "No subject"
self.parts = []
self.host = host
def AddPart(self, type, data, name="untitled"):
self.parts.append((type,data,name))
def BodyHTML(self, html):
self.htmlbody = html
def AddFile(self, filename):
name = os.path.basename(filename)
t = mimetypes.guess_type(name)[0]
self.AddPart(t, open(filename,"rb").read(),name)
def Body(self, s):
self.body = s
def To(self, s):
if type(s) == type([]):
self.to = s
else:
self.to = [s]
def From(self, s):
self.frm = s
def ReplyTo(self, s):
self.rplto = s
def Subject(self, s):
self.subject = s
def Get(self, index=-1):
if index>=0:
to = [self.to[index]]
else:
to = self.to
if self.htmlbody or self.parts:
self.out = StringIO.StringIO("")
self.mail = MimeWriter.MimeWriter(self.out)
if not self.rplto: self.rplto = self.frm
self.mail.addheader("To", string.join(to, ", "))
if self.rplto:
self.mail.addheader("Reply-to", self.rplto)
self.mail.addheader("From", self.frm)
self.mail.addheader("Subject", self.subject)
self.mail.addheader("MIME-Version", "1.0")
self.bodyout = self.mail.startmultipartbody("mixed")
if self.body:
self.text = self.body
self.bodyout.write(self.text+"\n\n")
if self.htmlbody:
part = self.mail.nextpart()
part.addheader("Content-Transfer-Encoding","8bit")
out = part.startbody("text/html", [("charset","iso-8859-1"),("format","flowed")])
out.write(self.htmlbody+"\n")
for t, d, name in self.parts:
part = self.mail.nextpart()
part.addheader("Content-Transfer-Encoding","base64")
part.addheader("Content-Disposition","inline")
out = part.startbody(t, [("name",name)])#
#("Content-Transfer-Encoding","8bit")
#s])
out.write(base64.encodestring(d))
self.mail.lastpart()
text = self.out.getvalue()
self.out.close()
else:
rplto = ""
if self.rplto: rplto = "Reply-To: %s\n" % self.rplto
text = """To: %s
From: %s
Subject: %s
%sContent-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
""" % (string.join(to, ", "), self.frm, self.subject, rplto) + self.body
return text
def Send(self, host="", single=1):
if not host: host = self.host
server = smtplib.SMTP(host)
if single:
for i in range(0,len(self.to)):
server.sendmail(self.frm, self.to[i], self.Get(i))
else:
server.sendmail(self.frm, self.to, self.Get())
server.quit()
return 1
#else:
# return 0
def sendmail(host="localhost", sender="Python Mail Module <python.mail.module@localhost>", to="", body="", subject=""):
"""
Einfache Routine um E-Mails zu verschicken
"""
try:
server = smtplib.SMTP(host)
if subject:
body = "Subject: " + subject + "\n\n" + body
server.sendmail(sender, [to], body)
server.quit()
except:
print "Error while sending message"
def errormail(to="error@localhost", subject="Python Error Message"):
try:
"""
Versendet eine E-Mail, die den letzten Traceback und
die Umgebungsvariablen enthaelt
"""
type=None
value=None
tb=None
limit=None
if type is None:
type, value, tb = sys.exc_info()
import traceback
body = "Traceback (innermost last):\n"
list = traceback.format_tb(tb, limit) + \
traceback.format_exception_only(type, value)
body = body + "%s %s" % (
string.join(list[:-1], ""),
list[-1],
)
import os
e = os.environ
se = e.keys()
se.sort()
body = body + "\n\nENVIRONMENT VARIABLES\n\n"
for k in se:
body = body + "%26s %s\n" % (k, str(e[k] ))
sendmail(to=to, body=body, subject=subject)
del tb
except:
pass
if __name__=="__main__":
if len(sys.argv) < 6:
print "Usage: csmailer.py <SMTPSERVER> <FROM> <TO> <SUBJECT> <BODY> <FILEWITHPATH>"
sys.exit(0)
mail = faktMimeMail()
mail.To([sys.argv[2]])
mail.From(sys.argv[1])
mail.Subject(sys.argv[3])
mail.Body(sys.argv[4])
mail.AddFile(sys.argv[5])
mail.AddPart("application/pdf", open(sys.argv[5]).read())
mail.Send(sys.argv[0])
Code: Alles auswählen
hans@poorbill:~/tmp> pychecker testxx.py
Processing testxx...
Warnings...
testxx.py:2: Imported module (rfc822) not used
testxx.py:159: Module (os) re-imported
hans@poorbill:~/tmp>
Habe ich doch gemacht, und zwar nicht aus einem XServer hearus. Es ließ sich alles importieren.Milan hat geschrieben:teste doch einfach alle Module einzeln ohne andere Programmteile durch..
Code: Alles auswählen
mail.AddPart("application/pdf", open(sys.argv[5]).read())
Diese Zeile fügt der Mail einen weiteren Part zu, in dem Fall ein anhang, mit dem Mimetype für PDF, und den dazugehörigen PFAD+File, des anzuhängenden Files.Was macht folgende Zeile?
Code: Alles auswählen
mail.AddPart("application/pdf", open(sys.argv[5]).read())