SMTP-Mail-Skript läuft nicht auf dem Server obwohl auf PC

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Maralorn
User
Beiträge: 8
Registriert: Montag 5. März 2007, 17:27
Kontaktdaten:

SMTP-Mail-Skript läuft nicht auf dem Server obwohl auf PC

Beitragvon Maralorn » Donnerstag 19. Juli 2007, 17:46

Hallo erstmal,
mein Name ist Malte und ich benutze schon seit einiger Zeit dieses Forum. Ich bin fleißig am Programmieren meiner Website und habe bis jetzt alle meine Probleme hier lösen können. Aber zu diesem Problem habe ich bis jetzt nichts gefunden.

Also folgendes:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: cp1252 -*-
import smtplib

def abschicken(empfaenger,vorname,nachname,nickname,passwort):
    msg = 'From: webmaster@maralorn.de\r\nTo: %s\r\n'\
          % (empfaenger)
    msg += 'Subject: Deine Registrierung auf Maralorn.de\r\n'\
               + 'MIME-Version: 1.0\r\nContent-Type: '\
               + 'text/html\r\n'\
               + 'Content-Transfer-Encoding: '\
               + 'quoted-printable\r\n\r\n'\
               + '<DOCTYPE HTML PUBLIC ";-//W3C//DTD HTML 3.2 Final//EN">\r\n'\
               + '<html>\r\n'\
               + '<head>\r\n'\
               + '<title>Deine Registration auf Maralorn.de</title>\r\n'\
               + '</head>\r\n' \
               + '<body style=";background:#6a5acd;color:#FFFFFF;font-family:Arial">\r\n'\
               + '<h3>Hallo '+vorname+'!</h3>\r\n\
Ich bedanke mich für deine Registrierung auf <a href="http://www.maralorn.de/">http://www.maralorn.de/</a><br\r\n>\
Du kannst dich ab jetzt mit<br>\r\n\
<i><br>\r\n\
<hr>\r\n\
Benutzername:    <b>'+nickname+'</b><br>\r\n\
Passwort:    <b>'+passwort+'</b><br>\r\n\
<hr>\r\n\
</i><br>\r\n\
auf der Seite anmelden und alle Funktionen voll nutzen.<br>\r\n\
Bitte achte dabei auf die Groß- und Kleinschreibung.<br>\r\n\
<br>\r\n\
viele Grüße dein Malte!<br>\r\n\
<br>\r\n\
-------------------------<br>\r\n\
diese Mail wurde automatisch generiert.<br>\r\n\
<br><br>Malte Brandy | webmaster@maralorn.de | <a href="http://www.maralorn.de/">http://www.maralorn.de/</a>\r\n\
</body></html>'
    client = smtplib.SMTP()
    client.set_debuglevel(1)
    client.connect('mail.maralorn.de',25)
    client.sendmail('malte.brandy@maralorn.de',empfaenger,msg)
    client.quit()

print "Content-type: text/html"
print
abschicken("malte.brandy@maralorn.de","Malte","Brandy","Maralorn","********")


Diese Skript läuft bei mir auf dem PC einwandfrei.
Aber mein Server spuckt Fehler 500 aus und folgende Fehlermeldung:
[code=]
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: Traceback (most recent call last):
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299, in HandlerDispatch\n result = object(req)
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/site-packages/mod_python/cgihandler.py", line 96, in handler\n imp.load_module(module_name, fd, path, desc)
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: File "/var/www/vhosts/maralorn.de/httpdocs/mail.py", line 45, in ?\n abschicken("malte.brandy@maralorn.de","Malte","Brandy","Maralorn","********")
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: File "/var/www/vhosts/maralorn.de/httpdocs/mail.py", line 39, in abschicken\n client.connect('mail.maralorn.de',25)
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/smtplib.py", line 307, in connect\n (code, msg) = self.getreply()
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/smtplib.py", line 348, in getreply\n line = self.file.readline()
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: File "/usr/lib/python2.4/socket.py", line 340, in readline\n data = self._sock.recv(self._rbufsize)
[Thu Jul 19 18:24:11 2007] [error] [client 87.162.179.254] PythonHandler mod_python.cgihandler: error: unable to select on socket
[/code]

Ich habe Windows.
Der Server UNIX.

Normalerweise funktioniert der Server einwandfrei deswegen bin ich etwas ratlos. Habt ihr eine Idee?

Danke im Voraus

Gruß Malte
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 19. Juli 2007, 17:56

Versuch doch mal mit simplemail die Mails zu schicken. Funktioniert das?
Zuletzt geändert von Leonidas am Donnerstag 19. Juli 2007, 18:05, insgesamt 1-mal geändert.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Maralorn
User
Beiträge: 8
Registriert: Montag 5. März 2007, 17:27
Kontaktdaten:

Beitragvon Maralorn » Donnerstag 19. Juli 2007, 18:01

Oha ging das Schnell, Danke.
Aber die Sache hat einen Hacken.
Ich kann leider keinen eigenen Module auf den Server Laden.
Ich schaus mir aber torotzdem mal an.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 19. Juli 2007, 18:06

Maralorn hat geschrieben:Ich kann leider keinen eigenen Module auf den Server Laden.

Warum nicht? Das ist Pures Python, du brauchst nichts zu kompilieren sondern kannst es einfach in den gleichen Ordner tun, wie dein Script.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Maralorn
User
Beiträge: 8
Registriert: Montag 5. März 2007, 17:27
Kontaktdaten:

Beitragvon Maralorn » Donnerstag 19. Juli 2007, 18:22

Siehste?
Da hab ich also doch nicht soviel Ahnung wie ich dachte...
Ich habe das Modul runtergeladen und in mein Verzeichnis gepackt.
Also zuhause läufts aber wenn ich beides auf den Server lade sagt er mir das Modul gibt es nicht.

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: cp1252 -*-
import smtplib
from simplemail import Email

def abschicken(empfaenger,vorname,nachname,nickname,passwort):
    email=Email(
    from_address = "webmaster@maralorn.de",
    to_address = empfaenger,
    smtp_server = "mail.maralorn.de",
    subject = "Deine Registrierung auf Maralorn.de",
    message = '<DOCTYPE HTML PUBLIC ";-//W3C//DTD HTML 3.2 Final//EN">\r\n'\
               + '<html>\r\n'\
               + '<head>\r\n'\
               + '<title>Deine Registration auf Maralorn.de</title>\r\n'\
               + '</head>\r\n' \
               + '<body style=";background:#6a5acd;color:#FFFFFF;font-family:Arial">\r\n'\
               + '<h3>Hallo '+vorname+'!</h3>\r\n\
Ich bedanke mich für deine Registrierung auf <a href="http://www.maralorn.de/">http://www.maralorn.de/</a><br\r\n>\
Du kannst dich ab jetzt mit<br>\r\n\
<i><br>\r\n\
<hr>\r\n\
Benutzername:    <b>'+nickname+'</b><br>\r\n\
Passwort:    <b>'+passwort+'</b><br>\r\n\
<hr>\r\n\
</i><br>\r\n\
auf der Seite anmelden und alle Funktionen voll nutzen.<br>\r\n\
Bitte achte dabei auf die Groß- und Kleinschreibung.<br>\r\n\
<br>\r\n\
viele Grüße dein Malte!<br>\r\n\
<br>\r\n\
-------------------------<br>\r\n\
diese Mail wurde automatisch generiert.<br>\r\n\
<br><br>Malte Brandy | webmaster@maralorn.de | <a href="http://www.maralorn.de/">http://www.maralorn.de/</a>\r\n\
</body></html>'
)   
    email.content_subtype = "html"
    email.send()
   
print "Content-type: text/html"
print
abschicken("malte.brandy@maralorn.de","Malte","Brandy","Maralorn","********")


Ich vermute der Fehler ist trivial aber noch sehe ich ihn nicht...
Maralorn
User
Beiträge: 8
Registriert: Montag 5. März 2007, 17:27
Kontaktdaten:

Beitragvon Maralorn » Donnerstag 19. Juli 2007, 19:29

Also warum der Server das Modul aus dem gleichen verzeichnis nicht findet ist mir ein Rätsel...
Aber egal!
Ich habe meinen Code einfach in simpelmail mit reingehängt... was an meinem PC wiederum funktioniert.
Auf dem Server kriege ich bei email.send() dieselbe Fehlermeldung wie oben kann es sein, dass die Funktion auf dem Server kaput ist oder einfach blockiert ist, zum Beispiel zum Spamschutz?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Donnerstag 19. Juli 2007, 20:02

Oder mod_python pfuscht dir rein. mod_python ist so eine Geschichte für sich selbst und definitiv keine mit Happy End.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Beitragvon mkesper » Freitag 20. Juli 2007, 08:11

Maralorn hat geschrieben:Auf dem Server kriege ich bei email.send() dieselbe Fehlermeldung wie oben kann es sein, dass die Funktion auf dem Server kaput ist oder einfach blockiert ist, zum Beispiel zum Spamschutz?

Frag doch mal deinen Provider, ob Email-Versand erlaubt ist.
Es klingt für mich so, als ob der User, unter dem dein Skript läuft, keine Rechte hätte, ein Socket (ist nötig, um smtp zu machen) zu öffnen, was auch einer gewissen Logik entspricht.
Maralorn
User
Beiträge: 8
Registriert: Montag 5. März 2007, 17:27
Kontaktdaten:

Beitragvon Maralorn » Freitag 20. Juli 2007, 11:34

Gibt es vielleicht irgendwie eine andere Möglichkeit mails zu verschicken mit python außer mit smtplib?
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 20. Juli 2007, 12:38

Maralorn hat geschrieben:Gibt es vielleicht irgendwie eine andere Möglichkeit mails zu verschicken mit python außer mit smtplib?

Ja, du kannst auch das ``sendmail``-Binary ansprechen, dass könnte funktionieren.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Maralorn
User
Beiträge: 8
Registriert: Montag 5. März 2007, 17:27
Kontaktdaten:

Beitragvon Maralorn » Samstag 28. Juli 2007, 00:42

das habe ich ehrlich gesagt jetzt nicht verstanden... ich habe aber keine zeit mehr mich drum zu kuemmern habe eine loesung gefunden die mails ganz anders zu versende... Manuell :lol: trotzdem Danke

Gruss aus Brasilien Malte!
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Beitragvon Sr4l » Samstag 28. Juli 2007, 13:48

Wenn er dir sagt das es das Modul nicht gibt dann füge den Ordner hinzu, in dem das Script lagert das geht per:

Code: Alles auswählen

import sys
sys.path.append("/path/to/folder")

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder