Liebes Forum,
ich versuche meinem Raspberry beizubringen, mithilfe eines Python-Scripts über Gmail eine email zu versenden. Dabei sollen dem Script mehrere Parameter übergeben werden:
Empfänger, Subject, Body und die zu übertragenden Files.
Ziel ist es, das Script auch aus anderen Skripten heraus nutzen zu können.
Rufe ich nun das Script auf und versuche 3 Dateien zu versenden, erhalte ich 3 emails:
In der 1. email ist Datei 1, in der 2. email ist Datei 1+2, in der 3. email ist Datei 1,2 und 3.
Aufruf wäre z.B. mit
Irgendwie finde ich den Fehler nicht. Kann jemand helfen?
Herzlichen Dank!
Hier noch das bisherige Script:
Python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Usage: python mail_file.py Empfaenger Subject Body, [File_1, File_2]
################## Module laden ########################
import smtplib,sys
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email.Utils import COMMASPACE, formatdate
from email import Encoders
import os
################## Account-Datem eingeben ##############
USERNAME = "xxx@gmail.com"
PASSWORD = "*************"
################# Variablen auslesen, die dem Script übergeben wurden ############
TARGET = sys.argv[1] # Empfaenger
SUBJECT = sys.argv[2] # Subject
BODY = sys.argv[3] # Body (Text der email)
FILES = sys.argv[4] # Anhaenger (Files)
################# Funktion definieren ##################
def sendMail(to, subject, text, files=[]):
assert type(to)==list
assert type(files)==list
msg = MIMEMultipart()
msg['From'] = USERNAME
msg['To'] = COMMASPACE.join(to)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = subject
msg.attach( MIMEText(text) )
for file in files:
part = MIMEBase('application', "octet-stream")
part.set_payload( open(file,"rb").read() )
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"'
% os.path.basename(file))
msg.attach(part)
server = smtplib.SMTP('smtp.gmail.com:587')
server.ehlo_or_helo_if_needed()
server.starttls()
server.ehlo_or_helo_if_needed()
server.login(USERNAME,PASSWORD)
server.sendmail(USERNAME, to, msg.as_string())
server.quit()
################# Email senden ####################
dateien = FILES.split(",")
sendMail([TARGET],SUBJECT,BODY,dateien)
Alles anzeigen