E-Mail Script

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Gast

Hallo Allerseits,
ich versuche gerade ein E-mail skript zu schreiben.
es soll so funktionieren...

aus einem txt-file das zeilenweise e-mailadressen hat soll das skript folgendes tun. das file auslesen und an jede dieser e-mail adressen soll eine nachricht verschickt werden können...

Meine Frage nun:

Ich bin ziemlich neu in Python...

ist die serverangabe so richtig?

s = smtplib.SMTP('server') ???

Hat jemand ne Ahnung wie ich das am besten anpacken könnte?
Zuerst die Mails auslesen aus dem file und dann?
#
Danke euch
antimicro
User
Beiträge: 151
Registriert: Sonntag 29. Februar 2004, 16:24

Hi Gast,
ja das scheint richtig zu sein. Allerdings ist der Objektname "s" wohl etwas ungünstig.

Code: Alles auswählen

import smtplib

smtp_server = smtplib.SMTP("irgendeiner.de")
Der Rest sollte mit

Code: Alles auswählen

Abs = "am@besten.du"
Nachricht = '''\
 From: %s
 Subject: 'testin'

 This is a test '''%Abs

mail_adressen_datei = file("mail.txt","r")
mail_adressen = mail_adressen_datei.readlines()

for i in mail_adressen:
  mail_adresse = i.replace("\n","")
  smtp_server.sendmail(Abs,mail_adresse,Nachricht)

klappen.

Edit: Hab mich bei der Nachricht vertüdelt. Sollte aber dennoch funktionieren
Zuletzt geändert von antimicro am Mittwoch 29. Dezember 2004, 12:37, insgesamt 1-mal geändert.
greetings
sebi
Gast

Hi
ich bins nochomal...
ich bräuchte ein wenig Hilfe....
wär echt nett wenn mir jemand Hilfestellung gibt...
Hier mal mein Anfang:

Code: Alles auswählen

import smtplib
import sys

form email.MIMEText import MIMEText
file = open("testmails",'r')
msg = MIMEText(file.read())
file.close()

msg['Subject'] = 'inhalt'
msg['From'] = 'Sender'
msg['To'] = 'Empfänger'

s = smtplib.SMTP('server')
s.connect()
s.sendmail("sender_email",["empfänger_email"],msg.as_string())
s.quit()
Leider weiß ich nicht was es mit dem MIMEText auf sich hat...kann mir das jemand erklären..hab ich so im web gefunden...
mach ich das soweit richtig?

und das connecten zum server mit smtplib.SMTP ist auch richtig?
wenn ichs laufen lass passiert irgendwie nichts...

Für feedback bini ch dankbar...
Gast

Ups,
da war wohl jemand schneller gerade..

Danke fürdie Antwort!!!
antimicro
User
Beiträge: 151
Registriert: Sonntag 29. Februar 2004, 16:24

Am besten kannst du hier in diesem Forum den Python Button benutzen. Damit dein Python Code auch farblich markiert wird.

Code: Alles auswählen

form email.MIMEText import MIMEText 
form oder from?

Beim connecten bekommst du das Object zurück (smtp_server). Wenns nicht funktioniert bekommst du einen Fehler den du allerdings abfangen könntest. Kannst ja mal ausprobieren.

Code: Alles auswählen

import smtplib

print smtplib.SMTP(" :D  :)  :( .de")
Mit dem MIME kann ich dir nicht helfen. Da hab ich leider auch keine Ahnung von :)
greetings
sebi
Gast

Hi,
danke für deine geduld und deine Hilfe...

er bekommt ein Objekt zurück , also eine Instanz...

irgendwie scheint er aber über den befehl

Code: Alles auswählen

smtp_server.connect()
nicht hinaus zu kommen....

wenn ich ausgaben hineinprogrammiere kommt er darüber nicht hinaus...
komisch...
Gast

UNter python 2.2 wird doch connect() unterstützt oder ??? :oops:
Gast

sorry für die vielen Posting Herr Moderator...

komisch wenn ich den Befehl connect() rausnehme und gleich

Code: Alles auswählen

smtp_server.sendmail(Sender,Empfänger,message)
mache dann gehts....

???
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Habe das ganze mal nach Netzwerke verschoben, da ists es besser aufgehoben :wink: . Desweiteren hab ich oben nochmal python-Tags gesetzt, damit das ganze lesbar bleibt. Wenn du das immer machst, bin ich dir nicht wegen vielen Einzelposts böse, da die nicht soviel Arbeit machen wie einzelne Sachen zu editieren :wink: ... kleiner Spaß.

connect musst du nur dann ausführen, wenn du bei der Initialisierung kein Server angegeben hast, also SMPT ohne Parameter gerufen hast. Dann kannst du nachträglich eine Verbindung zu einem Server herstellen, den du dann in connect übergibst.

mfG Milan
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Ich hab da eine Mailfunktion geschrieben (Hoffe sie funktioniert).

Code: Alles auswählen

import email
import smtplib
from email import Encoders
from email.Message import Message
from email.MIMEText import MIMEText as mimeobj
from email.MIMEBase import MIMEBase
from email.MIMEMultipart import MIMEMultipart

def sendmail(sender, to, subject, text, attachment=0):
    if attachment:
        msg = MIMEMultipart()
    else:
        msg = mimeobj(text)
    msg["Subject"] = subject
    msg["From"] = sender
    msg["To"] = to
    
    if attachment:
        msg.preamble = ""
        msg.epilogue = ""
        txt = mimeobj(text)
        msg.attach(txt)
        for a in attachment:
            try:
                fp = open(a, "rb")
                at = MIMEBase("application","octet-stream")
                at.set_payload(fp.read())
                fp.close()
                Encoders.encode_base64(at)
                fn = a
                if len(fn) > 20:
                    fn = fn[-20:]
                at.add_header("Content-Disposition", "attachment", filename=fn)
                msg.attach(at)
            except:
                pass 
    
    s = smtplib.SMTP()
    s.connect()
    s.sendmail(sender, [to], msg.as_string())
    s.close()
TUFKAB – the user formerly known as blackbird
Antworten