#!/usr/bin/perl -w

use strict; 
use IO::Socket;

#################################
# INFORMATIONS SUR LA CONNEXION #
#################################
my $server = 'smtp.unilim.fr';
my $port = '25';

#############
# CONNEXION #
#############
my $sock = IO::Socket::INET( PeerAddr => $server,
                             PeerPort => $port,
                             Proto    => 'tcp',
);
# si la connexion échoue, on le signale à l'utilisateur
unless ( $sock ) {
  die "ERREUR - Impossible de se connecter à $server sur le port $port";
}

###########################################################
# SOUS-PROCÉDURE GÉRANT LES ÉCHANGES AVEC LE SERVEUR SMPT #
###########################################################
sub dialog {
    my ( $sock, $send ) = @_;
    print $sock $send;
    print "Envoyé au serveur : $send";
    my $receive = <$sock>;
  die "Pas de réponse à : $send" unless $receive;
    print "Reçu du serveur : $receive";
}

###################################
# INFORMATIONS CONCERNANT LE MAIL #
###################################
print "Entrez le nom de l'expéditeur : ";
my $expediteur = <>;
chomp $expediteur; #Supprime le caractère de retour à la ligne de la varible $expediteur

print "Entrez le nom du destinataire : ";
my $destinataire = 'nonMaisTuTePrendsPourUnJedi@unilim.fr';
chomp $destinataire; #idem

# Dans la suite, la chaîne '\015\12' sert à valider la commande envoyée au serveur
if ( my $server = <$sock>) {
    print "Salutations du serveur : $server";
    dialog( $sock,  "HELO $server\015\012" );
    dialog( $sock,  "MAIL FROM:<$expediteur>\015\012" );
    dialog( $sock,  "RCPT TO:<$destinataire>\015\012" );
    dialog( $sock,  "DATA\015\012" );
    dialog( $sock,  "test\015\012.\015\012" );
    dialog( $sock,  "QUIT\015\012" );
}
else {
    die "Pas de salutations du serveur...\n"
}

########################################################################################################################
################################################### POUR FINIR LE TP ###################################################
########################################################################################################################
#
# Vous devrez créer des variables pour le message à envoyer.
#
# Typiquement : 
#	- le sujet
#	- la date
#	- l'heure
#	- le fuseau
#
# Si vous pouvez également modifier les champs pour :
#	- le destinataire
#	- l'expéditeur
#	- le(s) destinaire(s) en copie conforme
#	- le(s) destinaire(s) en copie cachée
#	- des commentaires
#	- une adresse de réponse
#
# Pour aller plus loin, essayer de regarder comment envoyer des pièces jointes (son, image, video, script, ...)
#
########################################################################################################################





