# -*- coding: UTF-8 -*- import email import smtplib import time import copy from email.MIMEMultipart import MIMEMultipart from email.MIMEText import MIMEText from email.MIMEImage import MIMEImage from email.MIMEBase import MIMEBase import asetukset def laheta(to_addr, from_addr, msg): tries = 0 while tries < 10: tries += 1 try: server = smtplib.SMTP(asetukset.smtp_host, asetukset.smtp_port) server.sendmail(to_addr, from_addr, msg) server.close() return except SMTPConnectError, info: if info[0] == 421: time.sleep(10) else: raise SMTPConnectError, info raise Exception, 'Timeout, tried %d times' % tries def vastaa(viesti, teksti, liitteet = []): if liitteet: reply = MIMEMultipart() tekstiosa = MIMEText(teksti, _charset = 'utf-8') reply.attach(tekstiosa) for filu in liitteet: data = open(filu, 'rb').read() if filu.endswith('.jpg'): liite = MIMEImage(data, _subtype = 'jpeg') else: liite = MIMEBase('application', 'octet-stream') liite.set_payload(data) email.Encoders.encode_base64(liite) liite.add_header('Content-Disposition', 'attachment', filename=filu) reply.attach(liite) else: reply = MIMEText(teksti, _charset = 'utf-8') # Vastausviestin oletuskentät reply['From'] = asetukset.email_from reply['To'] = viesti['From'] reply['Subject'] = 'Re: ' + viesti['Subject'] reply['Date'] = time.strftime('%a, %d %b %Y %H:%M:%S %z') laheta(reply['From'], reply['To'], reply.as_string()) def edelleenlaheta(viesti, osoite): fwd = copy.copy(viesti) fwd.replace_header('To', osoite) laheta(fwd['From'], osoite, fwd.as_string()) def lainaus(viesti): r = '' for part in viesti.walk(): if part.get_content_type() == 'text/plain': for line in part.get_payload().split('\n'): r += '> ' + line + '\n' break r += '\n' return r