emails ohne smtplib

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
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Hallo zusammen,

ich will mails versenden, aber ohne smtplib. Geht das irgendwie?

Oder anders ausgedrueckt, ich habe kein SMTP Gateway was ich nutzen kann, da ich mich in einem gesichertem Netz befinde. Will aber Mails nur intern verschicken. Funktioniert das? Also quasi aehnlich wie die mail() funktion in php.

Danke
VG
bankkind
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Du sagst "intern verschicken", also nehme ich an es gibt einen internen Mailserver. Das Email muss ja irgendwie dorthin gelangen. Standardmäßig läuft auf einem Mailserver für den Empfang ein SMTP-Listener.

Du benötigst keinen externen SMPT-Relay-Server oder -Gateway, du kannst dich doch einfach direkt auf euren internen SMTP-Daemon (Port 25) verbinden und die Mails dort raufschieben.
Ich denke dass die smtplib dafür wohl nicht schlecht geeignet wäre?
fabi1511
User
Beiträge: 23
Registriert: Donnerstag 25. Juni 2009, 18:59

Warum willst du smtplib nicht benutzen. die standartbibliothek ist ja mit die größte stärke von Python...
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

Ja schon, smtplib waere wie geschaffen fuer meine aufgabe, aber ich kenne ganz einfach nicht den mailserver, bzw, ich weiss nciht wie ch ihn anpsrechen kann...

ich weiss aber das einige unserer middleware und backend systeme auch mails verschicken koennen ueber das linux/unix programm nail(mail). weiss jemand zufaellig ob diese software vorkonfiguriert ist bzw. ob ich diese mit python nutzen kann??

VG
bankkind
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Schau dir mal als allererstes an, ob auf dem Mailserver ein SMTP-Dienst läuft, denn im Grunde macht mailx (früher: nail) auch nichts anderes.

Das ist nicht so kompliziert, lies dir den SMTP-Standard oder einfach die Docs zur smtplib durch, dann hast du alles was du brauchst.
Ist auch viel eleganter als hier irgendein externes Tool aufzurufen.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

hallo,
ich weiss aber das einige unserer middleware und backend systeme auch mails verschicken koennen ueber das linux/unix programm nail(mail).
Dann läuft auch irgendwo ein Mailserver.

BTW, viele Linuxe - zumindest die Serverinstallationen - bringen einen installierten MTA (Mail Transfer Agent) mit, z.B. sendmail.

Der einfachste Weg ist, dass du die IP / Zugangsdaten von einem von diesen Servern bekommst. :-)

Gruß, noisefloor
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

bankkind hat geschrieben:Ja schon, smtplib waere wie geschaffen fuer meine aufgabe, aber ich kenne ganz einfach nicht den mailserver, bzw, ich weiss nciht wie ch ihn anpsrechen kann...
Dann wende dich vertrauensvoll an die Sysadmins. Ansonsten stehen die früher oder später bei dir auf der Matte, wenn du da versuchst, "wild" Emails zu verschicken...
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

OK, gemacht, getan.

via telnet kann ich local mit dem smtp arbeiten:


Code: Alles auswählen

telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 linux.local ESMTP Postfix

aber in python kann ich zum smtp nicht connecten via smtplib

>>> smtp = smtplib.SMTP("localhost")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib64/python2.4/smtplib.py", line 255, in __init__
addr = socket.gethostbyname(socket.gethostname())
socket.gaierror: (-2, 'Name or service not known')


hat jemand ne erklaerung?
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Schön, ein postfix-Server!

Hm, wie lautet denn der Hostname von deinem Pc?

Also was gibt folgendes Skript aus?

Code: Alles auswählen

import socket
print(socket.gethostname())
Führt das zu einer Exception, solltest du deinen Hostnamen korrekt setzen!

Es könnte daran liegen: http://wiki.list.org/pages/viewpage.act ... Id=4030722
bankkind
User
Beiträge: 106
Registriert: Freitag 14. September 2007, 23:02
Wohnort: Teltow
Kontaktdaten:

ich habs nun per workaround so geloest:

s = smtplib.SMTP(local_hostname='localhost',port=25)
Antworten