Welches dieser Module will einen X-Server?!?!

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.
Antworten
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Code: Alles auswählen

import rfc822, string, sys, base64, os, os.path, mimetypes
import smtplib, MimeWriter, StringIO
Irgenteins davon braucht ein laufenden X-Server unter linux! Aber auf meinem Onlineserver ist das nicht!

*nixraff* Wer ist schuld?
irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Wie kommst du darauf? Gibt's irgendeine Fehlermeldung? Ich bin auf meinem Linuxserver mit <Strg> + <Alt> + <F2> mal auf eine Konsole gegangen. Es ließ sich aber alles importieren. Keine Fehlermeldung.

Oder hätte ich das im Runlevel 3 auf meiner SuSE 8.1 Maschine prüfen müssen?

Hans
Zuletzt geändert von hans am Donnerstag 9. Januar 2003, 21:53, insgesamt 1-mal geändert.
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Die fehlermeldung lautet: Can't connect to X-Server

Muss ein Modul sein, denn die Meldung kommt bei dem import. Auf dem Onlineserver ist nichts in Sachen x installiert. Evtl. findet er bei dir alles was er braucht. Ich jedenfalls finde es bissl blöd, denn die Module sind für ein Mailscript, und ich brauche wohl alle. Aber mal sehen, evtl kann man ja das eine, das tört weglassen und alles anders lösen.
irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

ich habe zwar wirklich null ahnung welches einen X-Server brauchen kann, weil ich kein Linux habe, aber teste doch einfach alle Module einzeln ohne andere Programmteile durch... zu dem Rest kann ich wie gesagt nichts sagen :wink: :lol:
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Ja da flipp ich aus. Keines der importierten will ein X-Server. Jetzt muss ich mal weitere Quellen ansuchen...

Wer Lust hat hier der Code:

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])
Die Klasse, die da benutzt wird ist nicht von mir, nur der aufruf mittels übergaben. Soviel zum rechtlichen ;)
irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

pychecker sagt erstmal folgendes:

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>
Ich kann auf Anhieb so auch nichts endecken.
Milan hat geschrieben:teste doch einfach alle Module einzeln ohne andere Programmteile durch..
Habe ich doch gemacht, und zwar nicht aus einem XServer hearus. Es ließ sich alles importieren.

Was macht folgende Zeile?

Code: Alles auswählen

mail.AddPart("application/pdf", open(sys.argv[5]).read())


Hans
piddon
Gründer
Beiträge: 410
Registriert: Dienstag 30. Juli 2002, 18:03
Wohnort: Oestrich-Winkel
Kontaktdaten:

Was macht folgende Zeile?

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.

:)
irc: #python.de @ irc.freenode.net | [url=http://pythonwiki.pocoo.org]python-wiki[/url] | [url=http://www.pythonwiki.de/PythonDeForum/Faq]python-forum FAQ[/url]
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

an piddon:

Hast Du denn mal geguckt, wo die Fehlermeldung erfolgt? Kannst ja mal zum Debuggen ein paar print-Anweisungen einstreuen.
Jan
Antworten