import os
import time
#import urllib2
import urllib.request as urllib2 # compatible Python 2 et 3
import smtplib
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
#from email.MIMEText import MIMEText
from email.mime.text import MIMEText
from email import encoders
from io import BytesIO
import ftplib

def ftp(nom_fichier):

    # adresse du serveur FTP
    host = "ftpperso.free.fr"
    # votre identifiant
    user = "patrice.delpy"
    # votre mot de passe
    password = "0ghumsaz" 
    # adresse du serveur FTP
    host = "ftp.cluster011.ovh.net"
    # votre identifiant
    user = "analogde"
    # votre mot de passe
    password = "rainbow" 
    # connexion au serveur ftp
    session = ftplib.FTP('ftp.cluster011.ovh.net','analogde','rainbow')
    #session = ftplib.FTP('ftpperso.free.fr','patrice.delpy','0ghumsaz')
    # fixer le repertoire sur le serveur 
    session.cwd("/www/ALARME/Videos/")
    # selectionne le fichier sur le poste client
    fichier = open(nom_fichier,'rb')    
    #fichier = open('/home/pi/bof.jpg','rb')    
    # envoie du fichier
    print("Transfert FTP ...")
    print(nom_fichier)
    decoupe = nom_fichier.split("/")
    print(decoupe)
    nb =  len(decoupe)
    nom = decoupe[nb-1]
    
    #session.storbinary('STOR FTP_file.jpeg', fichier)    
    session.storbinary('STOR '+nom, fichier) 
    #fichier = FTP_file.jpeg
    #session.storbinary('STOR '+fichier, file) 
    fichier.close()                                  
    session.quit()
    print("FTP done")


####################################################################################

def debug(sujet, message, fichier):
 
    fromaddr = 'delpypatrice@gmail.com'
    toaddr = 'patrice.delpy@free.fr'
    msg = MIMEMultipart()
    msg['From'] = fromaddr
    msg['To'] = toaddr
    msg['Subject'] = sujet
    body = message
    msg.attach(MIMEText(body, 'plain'))
 
    filename = fichier
    attachment = open(filename, "rb")
 
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
 
    msg.attach(part)
 
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.starttls()
    server.login(fromaddr, "Un92pac007")
    text = msg.as_string()
    server.sendmail(fromaddr, toaddr, text)
    server.quit()
    print("Done")
    
####################################################################################
def get_attachment(fichier):
##    bytes = BytesIO()
##    img.save(bytes, format='JPEG')
##    msg = MIMEBase('image', 'jpeg')
##    msg.set_payload(bytes.getvalue())
##    encoders.encode_base64(msg)
##    msg.add_header('Content-Disposition', 'attachment',  filename='image.jpeg')

    part = MIMEBase('image', 'jpeg')
    part.set_payload(open(fichier, 'rb').read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment',  filename= fichier)
   #msg.attach(part)
    return part
 
def envoi_mail_joint(sujet,fichier):
    to = 'patrice.delpy@free.fr'
    subject = sujet
    gmail_user = 'delpypatrice@gmail.com'
    gmail_pwd = 'Un92pac007'

    print('Connecting...')
    smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo
    smtpserver.login(gmail_user, gmail_pwd)
    print('Preparing message...')
    outer = MIMEMultipart()
    outer['Subject'] = subject
    outer['To'] = to
    outer['From'] = gmail_user
    
    msg = MIMEMultipart('alternative')
    msg = MIMEMultipart()
    body ="blabla"
    msg.attach(MIMEText(body, 'plain'))
    
    outer.preamble = 'You will not see this in a MIME-aware email reader.\n'
    attachment = get_attachment(fichier)
    outer.attach(attachment)
    composed = outer.as_string()
    print('Sending...')
    smtpserver.sendmail(gmail_user, to, composed)
    smtpserver.close()
    print('Done.')

####################################################################################

def envoi_email(sujet, message):
    to = 'patrice.delpy@free.fr'
    gmail_user = 'delpypatrice@gmail.com'
    gmail_pwd = 'Un92pac007'
    print('Connecting...')
    smtpserver = smtplib.SMTP("smtp.gmail.com", 587)
    smtpserver.ehlo()
    smtpserver.starttls()
    smtpserver.ehlo
    smtpserver.login(gmail_user, gmail_pwd)
    print('Preparing message...')
    msg = MIMEMultipart()
    msg['Subject'] = sujet
    msg['To'] = to
    msg['From'] = gmail_user
    body = message #"blabla"
    msg.attach(MIMEText(body, 'plain'))
    composed = msg.as_string()
    print('Sending...')
    smtpserver.sendmail(gmail_user, to, composed)
    smtpserver.close()
    print('Done.')

####################################################################################

def envoi_sms(msg):
    user = '23278829'
    #texte = 'Detection alarm' 
    password = 'k8lEWAPJXCvmS4'
    url = 'https://smsapi.free-mobile.fr/sendmsg?&user='+user+'&pass='+password+'&msg='+msg
    req = urllib2.Request(url)
    reponse = urllib2.urlopen(req)
    if reponse.code == 200:
        print('Sms envoye')
    else:
        print('Erreur de transmission')

####################################################################################

def avertir_utilisateur(msg):
    #fichier = open('/var/www/Travail/status_alarm.txt', 'r')
    #chaine = fichier.readline()
    chaine = "on"
    
    if chaine == "on":
       #alarm_misc.envoi_email(msg)
       #alarm_misc.envoi_sms(msg)
       # change de repertoire
       #repertoire = "/home/pi"
       #os.chdir(repertoire)
       # determine le dernier fichier 
       #fichier = max(glob.iglob('*.jpg'), key=os.path.getctime) # [Jj][Pp][Gg]
       #chemin = repertoire + "/" + fichier     
       #alarm_misc.ftp(chemin) 
       envoi_mail_joint.envoi_mail_joint()
       print("Alarme ...")

####################################################################################

def data_log():
    
    path = "f:/WORKAREA/Python/essai/action_detected.log"
    fichier = open(path, 'a')
    time_str = time.strftime("%d:%m:%Y - %H:%M:%S")
    message = '[' + time_str + ']: ' + "Detection Pi camera"  + '\r\n'
    fichier.write(message)
    fichier.close()
    
    #os.chdir("f:/WORKAREA")
    #retval = os.getcwd()
    #print("Directory changed successfully %s" % retval)

####################################################################################

 
#data_log()
#avertir_utilisateur("blabla")
#envoi_mail_joint('Capture en transite',"met.jpeg")    
#envoi_sms('Mechant qui rode ...')   
#envoi_email("coucou", "Patrice message")

#ftp("met.jpg")
debug("plouf", "un petit message ...", "met.jpeg")