Seite 1 von 1

Mail-Versand ohne SMPT-Sever

Verfasst: Samstag 3. April 2010, 22:29
von Bonzo1993
Hi @ all,

gibt es eine Möglichkeit mit Python E-Mails (mit Anhang) ohne externen Mailserver zu versenden (wie das bei PHP möglich is)?

Verfasst: Samstag 3. April 2010, 22:45
von nemomuk
Erklär mir doch mal bitte, wie man mit PHP Mails ohne einen Mailserver verschickt?

Das geht mit PHP genauso wenig wie mit Python.

Für ein nützliches Script siehe hier: simplemail.py

Re: Mail-Versand ohne SMPT-Sever

Verfasst: Samstag 3. April 2010, 22:45
von cofi
Bonzo1993 hat geschrieben:(wie das bei PHP möglich is)
Wie ist es denn in PHP moeglich? Da das reichlich sprachunabhaengig ist, liesse sich das nachbilden.

Re: Mail-Versand ohne SMPT-Sever

Verfasst: Samstag 3. April 2010, 23:42
von /me
cofi hat geschrieben:
Bonzo1993 hat geschrieben:(wie das bei PHP möglich is)
Wie ist es denn in PHP moeglich?
Ist es nicht.

Verfasst: Sonntag 4. April 2010, 19:39
von Bonzo1993
entweder ganz einfach mit der mail()-Funktion oder mit einer anderen Bibliothek:

Code: Alles auswählen

<?php
  require_once("hmm/htmlMimeMail.php"); 
  $mail = new htmlMimeMail();
  $mail->setFrom("absender@test.de");
  $mail->setSubject("Mail mit Anhang");
  $mail->setText("siehe Anhang");

  $inhalt = $mail->getFile("bild.jpg");
  $mail->addAttachment($inhalt, "mail_bild.jpg");

  $mail->send(array("newuser@localhost"));
?>

Wo habe ich hier einen externen SMTP-Mailserver (bei dem ich mich anmelden hätte müssen, oder dem ich die Daten senden hätte müssen) gebraucht?? Nirgendswo! Nicht umsonst gibt es bei der Forensoftware phpBB die Möglichkeit entweder mit externen SMTP-Mailserver die Daten zu versenden, oder ohne...

Verfasst: Sonntag 4. April 2010, 19:48
von .robert

Verfasst: Sonntag 4. April 2010, 20:04
von Bonzo1993
so.. es funktioniert sowohl in PHP als auch in Python:

Code: Alles auswählen

# Import smtplib for the actual sending function
import smtplib

# Here are the email package modules we'll need
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart

COMMASPACE = ', '

# Create the container (outer) email message.
msg = MIMEMultipart()
msg['Subject'] = 'Our family reunion'
# me == the sender's email address
# family = the list of all recipients' email addresses
msg['From'] = me
msg['To'] = COMMASPACE.join(family)
msg.preamble = 'Our family reunion'

# Assume we know that the image files are all in PNG format
for file in pngfiles:
    # Open the files in binary mode.  Let the MIMEImage class automatically
    # guess the specific image type.
    fp = open(file, 'rb')
    img = MIMEImage(fp.read())
    fp.close()
    msg.attach(img)

# Send the email via our own SMTP server.
s = smtplib.SMTP()
s.sendmail(me, family, msg.as_string())
s.quit()
beide male brauch ich keinen externen (SMTP)-Mailserver...

Verfasst: Sonntag 4. April 2010, 20:49
von nemomuk
Weil bei PHP als auch bei der smtlib von Python standardmäßig mit localhost verbunden wird und du dennoch auf einen normalen SMTP-Server zurückgreifst.

Verfasst: Sonntag 4. April 2010, 21:01
von Bonzo1993
Betonung liegt auf extern und das is localhost wirklich nicht...

Verfasst: Montag 5. April 2010, 09:19
von /me
Bonzo1993 hat geschrieben:Betonung liegt auf extern und das is localhost wirklich nicht...
Dann wird die Frage klarer aber nicht verständlicher. Unter "extern" verstehst du offensichtlich einen Mailserver, der auf einer anderen Maschine läuft (oder vielleicht auch unter einer anderen IP erreichbar ist, was nicht das gleiche ist).

Natürlich kannst du mit einem auf dem gleichen System laufenden Mailserver genau so Mails verschicken wie mit einem weiter entfernten. Die Frage zielte folglich wohl eher dahin, ob das ohne Authentifizierung möglich ist. Dazu kann man nur ein deutliches "Vielleicht!" sagen. Wenn der Mailserver so konfiguriert ist, dass er von lokalen Sendern einen Zugriff ohne Authentifizierung erlaubt, dann geht das. Wenn nicht, nicht.

Re: Mail-Versand ohne SMPT-Sever

Verfasst: Mittwoch 19. Mai 2010, 10:02
von anonym114
Im Prinzip kann man ja mit jedem Mailserver E-Mails an jede E-Mail Adresse schicken. Wenn die E-Mail Adresse nicht zum eigenen System gehört, muss der Mailserver den Mailserver der Zieldomain kontaktieren um die Nachricht zu verschicken. Eigentlich sollte es da kein Problem sein den Mailserver auf der Zieldomain direkt anzusprechen ohne die Mail erst über einen lokalen oder externen Server zu schicken.
Problematisch könnte es höchstens werden wenn andere Mail Server durch ne Firewall gespert werden, sodass Mails immer über einen zulässigen Server versendet werden müssen.

Re: Mail-Versand ohne SMPT-Sever

Verfasst: Mittwoch 19. Mai 2010, 10:37
von Defnull
Apophis hat geschrieben:Im Prinzip kann man ja mit jedem Mailserver E-Mails an jede E-Mail Adresse schicken. Wenn die E-Mail Adresse nicht zum eigenen System gehört, muss der Mailserver den Mailserver der Zieldomain kontaktieren um die Nachricht zu verschicken. Eigentlich sollte es da kein Problem sein den Mailserver auf der Zieldomain direkt anzusprechen ohne die Mail erst über einen lokalen oder externen Server zu schicken.
Jahrelang ging das auch. Allerdings wird heutzutage kein ernsthaft konfigurierter Mail-Server einfach ungeprüft irgendwelche Mails annehmen. Die Nummer 1 Anti-Spam Maßnahme ist es, keine Mails von IPs anzunehmen, die nicht selbst als Mailserver ausgezeichnet sind.

Und selbst wenn das Skript auf einem Server mit korrekten MX und reverse DNS Einträgen liegt, ist die Nummer 2 Anti-Spam Maßnahme das so genannte Greylisting, also das ablehnen der Mails beim ersten Versuch. Ein Mailserver versucht es immer wieder. Ein schnell dahin gebasteltes SMTP Skript wohl eher nicht. Genau aus dem Grund ist die Maßnahme ja gut gegen Spam.

Man sollte also immer einen Mailserver zum Mail versandt nutzen (klingt irgendwie logisch). Auch wenn es theoretisch ohne geht (indem man selbst einen SMTP Server bastelt), kommen Mails in der Praxis dann meistens einfach nicht an.