EMail Versand mit Parametern und Attachment

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
Kris
User
Beiträge: 4
Registriert: Dienstag 8. November 2005, 14:28
Wohnort: Köln
Kontaktdaten:

Ist es möglich mit Python ein Script zu bauen das automatisch eine EMail versendet (inkl. Datenanhang - 1 TXT Datei) und die nötigen Parameter mitzugeben (Absender, Empfänger, etc. ...) ?

falls ja womit mach ich das am besten (Befehlsmäßig)

mfg

KRIS
pwneD ! ;(
mbierenfeld
User
Beiträge: 39
Registriert: Donnerstag 9. Dezember 2004, 22:02
Wohnort: Muenchen

dumdidum. erster :-)

Code: Alles auswählen

#!/usr/bin/python

# Copyright 2000 by Philippe Possemiers (ppossemiers@tijd.com)
# This script works together with the 'motion' program, written by Jeroen Vreeken and 
# can be activated with his '-E' option (or through '/etc/motion.conf'). It mails the pictures 
# that were generated to a predefined e-mail address. A dial-up connection is established 
# when needed and is also properly closed afterwards.
# Change the variables in 'init' to match your setup.
# This software is licensed under the terms of the GNU General Public License (GPL). 

import string, sys, types, tempfile, time, os
import mimetypes,mimetools,MimeWriter 
import smtplib, shutil

class SmtpWriter: 

	def __init__(self): 
		#The mail server
		self.__server = 'some_server.some_domain.com'   
		#From address
		self.__fromAddress = 'some_user@some_domain.com'  
		#To Address
		self.__toAddress = 'some_user@some_domain.com'
		#Subject
		self.__subject = 'Some fitting subject'
		#Body text. This can be empty.
		self.__body = 'Some text' 
		#The directory in which the images are saved (see /etc/motion.conf). 
		#!!!There should be no subdirectories in this directory!!!
		#The path should be ended with a slash(/)
		self.__imageDir = '/Some_directory/'  
		#The directory to which the images are moved after being sent (otherwise all of them would be sent every time)
		#The path should be ended with a slash(/)
		self.__ImageDirMoved = '/Some_directory2/'  
 
	def Message(self, sender="", subject="", recipient="", body="", attachments=[]): 
		tempFileName = tempfile.mktemp() 
		tempFile = open(tempFileName,'wb') 
		message = MimeWriter.MimeWriter(tempFile) 
		message.addheader("From",sender) 
		message.addheader("To", recipient) 
		message.addheader("Subject", subject) 
		message.flushheaders() 
		message.startmultipartbody('mixed') 
		submessage = message.nextpart() 
		fp = submessage.startbody('text/plain') 
		fp.write(body) 
		for attachFile in attachments: 
			fileName = attachFile
			submessage = message.nextpart() 
			submessage.addheader("Content-Disposition", "attachment; filename=%s" % fileName) 
			ctype,prog = mimetypes.guess_type(fileName) 
			enctype = 'base64'
			submessage.addheader("Content-Transfer-Encoding",enctype) 
			fp = submessage.startbody(ctype) 
			afp = open(self.__imageDir + fileName,'rb') 
			mimetools.encode(afp, fp, enctype) 
		message.lastpart()
             
		tempFile.close() 
		return tempFileName
     
	def getImages(self):
		time.sleep(5)  #Wait for some more pictures
		attachList  =  os.listdir(self.__imageDir)
		return attachList

	def sendMessage(self):
		aList = self.getImages()
		if len(aList) > 0:
			message = self.Message(self.__fromAddress, self.__subject, self.__toAddress, self.__body, self.getImages())
			for f1 in aList:
				shutil.copy(self.__imageDir + f1, self.__imageDirMoved)
			for f2 in aList:
				os.remove(self.__imageDir + f2)
			sendFile = open(message, 'r')
			sendString = sendFile.read()
			sendFile.close()
			os.remove(message)
			o = os.system('/etc/ppp/ppp-on &')
			k = os.system('netstat -rn | grep -F pp0')
			while(k != 0) :
				k = os.system('netstat -rn | grep -F pp0')
			time.sleep(5)  #Give mailserver some time
			try: 
				server = smtplib.SMTP(self.__server) 
				server.sendmail(self.__fromAddress, self.__toAddress, sendString) 
				print "SmptWriter: Message sent\n"
			finally: 
				server.quit() 
				o = os.system('/etc/ppp/ppp-off &')

writer =  SmtpWriter()
writer.sendMessage()

sys.exit()
Kris
User
Beiträge: 4
Registriert: Dienstag 8. November 2005, 14:28
Wohnort: Köln
Kontaktdaten:

was soll ich sagen ...
danke sehr =)

ist zwar ein wenig komplex aber mal schauen was ich wie gebrauchen kann :P
pwneD ! ;(
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Kris hat geschrieben:ist zwar ein wenig komplex aber mal schauen was ich wie gebrauchen kann :P
Gerold hat dazu auch schon ein Modul geschrieben, kannst es dir ja mal ansehen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten