Logiciel libre, droits d'utilisation précisés en français
dans le fichier : licence-fr.txt
Traductions des droits d'utilisation dans les fichiers :
licence-de.txt , licence-en.txt , licence-es.txt ,
licence-it.txt , licence-nl.txt , licence-pt.txt ,
licence-eo.txt , licence-eo-utf.txt
Droits d'utilisation également sur la page web :
http://libremail.tuxfamily.org/voir.php?page=droits
Ce programme permet de saisir un Email
On peut choisir les destinataires à partir du carnet d'adresses
ou en saisir de nouveaux
Le fichier obtenu est ensuite stoqué dans le répertoire des mails à envoyer
Pour que cela soit possible, il faut :
- soit que la commande cremail soit lancée depuis la chaine vmail...
- soit préciser le nom du répertoire de l'arborescence des mails
*/
#define appli // pour la déclaration de variables globales à l'application
/* variable globale au source
(pour éviter des passages de paramètres) */
long numail; // numéro que prendra le mail généré
/* programme principal */
int main (int nbarg, char *varg[])
{
char ficmail [szchemin]; // fichier mail de réponse
char fentete [szchemin]; // fichier contenant l'entete du message
char sujet [200]; // sujet du mail
char commande [szchemin + 13]; // pour saisir le message
char *editeur; // éditeur utilisé pour saisir les mails
unsigned long heuredeb; // pour détecter si on appelle un éditeur graphique
// récupération du nom de l'exécutable
memcom (*varg);
// on démarre avec la configuration standard du clavier
mode_normal ();
// si nombre d'arguments correct
if (nbarg <= 2)
// récupérer le nom du répertoire des mails à envoyer
recupdirenv (nbarg, varg [1]);
else
// sinon, rappel de la syntaxe de la commande
// "Syntaxe : %s [répertoire_emails]"
psyntaxe ("SYNT_CREMAIL");
// saisir le sujet du mail
// "Sujet du mail : "
affiche_msg_nocr ("SUJET_NOUVMAIL");
fgets (sujet, sizeof (sujet), stdin);
// si sujet trop long pour rentrer dans le buffer
if (sujet [strlen (sujet) - 1] != '\n')
{
// mettre le passage à la ligne manquant
sujet [strlen (sujet) - 1] = '\n';
// et ignorer la fin de ligne
fflush (stdin);
}
// créer un nom de fichier temporaire pour le message
// il a toujours le même nom pour éviter de polluer le
// répertoire d'envoi en cas de fausse manoeuvre opérateur
sprintf (ficmail, "%s/tmp-mes", direnv);
// Choix de l'éditeur de textes
editeur = getenv ("EDITOR");
if (! editeur)
editeur = "vi";
// saisir le message
// fabriquer la commande à éxécuter
sprintf (commande, "%s %s", editeur, ficmail);
// récupérer l'heure courante
heuredeb = time (0);
// lancer la commande
system (commande);
// si la commande a rendu la main très rapidement
if (time (0) <= heuredeb + 1)
{
// "Tapez sur la touche entrée en cas d'erreur de lancement de"
// "l'éditeur ou après avoir sauvé le mail depuis un éditeur graphique"
affiche_msg ("ATTENTE_ENTREE1");
affiche_msg_nocr ("ATTENTE_ENTREE2");
// attendre confirmation de l'opérateur
while (getchar () != '\n')
;
}
// sortie si arrêt de la saisie
if (access (ficmail, 0) < 0)
// "Arrêt de la saisie par l'opérateur"
errfatale ("ARRET_SAISIE", 0);
// charger le carnet d'adresses
charge_carnet_adr ();
// créer un nom de fichier temporaire pour l'entête du mail
sprintf (fentete, "%s/tmp-ent", direnv);
// fabriquer l'entête du mail de réponse
gene_entete (sujet, fentete);
// mémoriser les dates et heure d'envoi du message
ajout_date (fentete);
// on va regrouper l'entête et le message dans un fichier numéroté définitif
fusionner (fentete, numail, ficmail);
// ajouter la signature au message, si elle existe
ajout_sign (ficmail);
// mettre à jour le fichier numail du répertoire de sortie
sauv_num_dermail (direnv, numail);
// pour faire plaisir à gcc qui veut une fonction main de type int
return (0);
}
/* génère l'entête du mail que l'on transfère */
void gene_entete (char *sujetmail, char *nomfic)
{
// fabriquer et ouvrir en écriture le fichier d'entête
fdest = fopen (nomfic, "w");
if (! fdest)
// "Impossible de créer un fichier d'entête %s"
errfatale ("IMPOS_CRE_ENTETE", nomfic);
// récupérer l'adresse de l'expéditeur
lire_exped ();
// chercher le numéro du mail que l'on va créer
numail = num_dermail (direnv) + 1;
// génération du champ Message-Id
gen_mes_id (fdest, numail, buf_lect);
// y copier l'expéditeur du message
ajouts = 0;
ajout_adr (buf_lect, "From");
fputc ('\n', fdest);
// configurer la liaison clavier pour lecture directe avec timeout
mode_raw ();
// Choix des destinataires
debpage ();
effpage ();
// un copyright qui n'est pas celui d'Outlook ;-))
// "libremail : logiciel libre multilingue"
fprintf (fdest, "User-Agent: libremail : %s\n",
message ("QUALIF_LIBREMAIL"));
// permettra de relire ce fichier
fclose (fdest);
}