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)?
Mail-Versand ohne SMPT-Sever
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
Das geht mit PHP genauso wenig wie mit Python.
Für ein nützliches Script siehe hier: simplemail.py
Zuletzt geändert von nemomuk am Samstag 3. April 2010, 22:47, insgesamt 1-mal geändert.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Wie ist es denn in PHP moeglich? Da das reichlich sprachunabhaengig ist, liesse sich das nachbilden.Bonzo1993 hat geschrieben:(wie das bei PHP möglich is)
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
entweder ganz einfach mit der mail()-Funktion oder mit einer anderen Bibliothek:
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...
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"));
?>
so.. es funktioniert sowohl in PHP als auch in Python:
beide male brauch ich keinen externen (SMTP)-Mailserver...
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()
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).Bonzo1993 hat geschrieben:Betonung liegt auf extern und das is localhost wirklich nicht...
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.
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.
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.
- Defnull
- User
- Beiträge: 778
- Registriert: Donnerstag 18. Juni 2009, 22:09
- Wohnort: Göttingen
- Kontaktdaten:
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.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.
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.
Bottle: Micro Web Framework + Development Blog