SCR/AL1 - TOME III. Les librairies utilitaires
Ce groupe de fonction permet d'envoyer des messages via un serveur SMTP. Il permet d'envoyer des fichiers en base64.
Deux groupes distincts ont été développés : le premier gère les mails simples, sans attachment. Le second permet d'attacher des fichiers en base64 ou en texte.
Il ne faut pas mélanger les fonctions des deux groupes dans une même session.
Mails sans attachment
Mails avec attach
Variables
Syntax
SendMailConnect(server, port, host, user)
char *server, *host, *user;
int port;
Description
Connecte au serveur SMTP server via le port port. Les paramètres host et user sont seulement indicatifs et ne sont en général pas traités par le serveur.
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Exemple
U_ch **data;
if(SendMailConnect("smtp.whitehouse.org", 25, "heaven.ru", "kgb")) return(-1);
if(SendMailTo("bill@whitehouse.be")) goto err;
data = SCR_vtom("To: <bill@whitehouse.org>,Subject:La vie est belle,Coucou,c'est moi,..", ',');
if(SendMailData(data)) goto err;
SCR_free_tbl(data);
SendMailClose();
return(0);
err:
printf("Error : %s\n", SENDMAIL_ERROR);
SendMailClose();
return(-1);
Voir également
SendMailConnect(), SendMailTo(), SendMailStartData(), SendMailWriteData(), SendMailFile(), SendMailEndData(), SendMailData(), SendMailClose()
File s_smtp.c
SendMailAddAttachTxtLine(char *txt, int convertansi)
SendMailAttach(char *filename, char *contenttype, int encoding, int convertansi, int isbody)
SendMailClose()
SendMailConnect(server, port, host, user)
SendMailData(data)
SendMailEnd()
SendMailEndData()
SendMailFile(filename)
SendMailInit(char *smtpsrv, char *fromaddr, char *fromname, char *toaddr, char *subject)
SendMailInitEx(char *smtpsrv, int port, char *fromaddr, char *fromname, char *toaddr, char *subject)
SendMailStartAttachTxt()
SendMailStartData()
SendMailTo(dest)
SendMailWrite(rec)
SendMailWriteData(data)
SendMailInitEx (file s_smtp.c:498)
Syntax
SendMailInitEx(char *smtpsrv, int port, char *fromaddr,
char *fromname, char *toaddr, char *subject)
Description
Démarre une session SMTP. Crée le socket et envoie les premières informations jusqu'au début de la section DATA.
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Exemple
if(SendMailInitEx(argv[1], // serveur : mail.xon.be
25, // Porte
argv[2], // From address : jmp@xon.be
argv[2], // From user name : Jean-Marc
argv[3], // To : bp@xon.be
"Essai" // subject
)) goto err;
// Si on veut un texte libre comme attach 1 (vu souvent comme body)
if(SendMailStartAttachTxt()) goto err;
SendMailAddAttachTxtLine("Début de mon texte", 1);
SendMailAddAttachTxtLine("------------------", 1);
SendMailAddAttachTxtLine("Line 1\nLigne 2\nLigne 3", 1);
SendMailAddAttachTxtLine("---\nFin.", 1);
// attacher des fichiers avec diff encoding
if(SendMailAttach("testmail.txt", "text/plain", 0, 1, 1)) goto err;
if(SendMailAttach("testmail.txt", "text/plain", 64, 1, 1)) goto err;
if(SendMailAttach("lastnode.gif", "image/gif", 1, 0, 0)) goto err;
if(SendMailAttach("Euro.doc", "application/octet-stream", 1, 0, 1)) goto err;
// Fin
if(SendMailEnd()) goto err;
printf("Ok\n");
return(0);
err:
printf("Error : %s\n", SENDMAIL_ERROR);
SendMailClose();
return(-1);
}
Voir également
SendMailInit(), SendMailEnd(), SendMailAttach(), SendMailStartAttachTxt(), SendMailAddAttachTxtLine()
SendMailWrite (file s_smtp.c:33)
Syntax
SendMailWrite(rec)
char *rec;
Description
Envoie des données (ou une commande) sur le socket ouvert par SendMailConnect().
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Voir également
SendMailConnect(), SendMailData(), SendMailStartData(), SendMailWriteData()
Syntax
SendMailTo(dest)
char *dest;
Description
Ajoute des destinataires pour le message.
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Voir également
SendMailConnect(), SendMailTo(), SendMailStartData(), SendMailWriteData(), SendMailFile(), SendMailEndData(), SendMailData(), SendMailClose()
Syntax
SendMailStartData()
Description
Prépare l'envoi d'un message.
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Voir également
SendMailConnect(), SendMailTo(), SendMailStartData(), SendMailWriteData(), SendMailFile(), SendMailEndData(), SendMailData(), SendMailClose()
Syntax
SendMailWriteData(data)
U_ch *data;
Description
Envoie une ligne d'un message.
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Voir également
SendMailConnect(), SendMailTo(), SendMailStartData(), SendMailWriteData(), SendMailFile(), SendMailEndData(), SendMailData(), SendMailClose()
Syntax
SendMailFile(filename)
char *filename;
Description
Envoie un fichier dans la zone DATA du message. La zone DATA est ouverte et fermée par cette fonction (un seul fichier peut donc être envoyé).
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Voir également
SendMailConnect(), SendMailTo(), SendMailStartData(), SendMailWriteData(), SendMailFile(), SendMailEndData(), SendMailData(), SendMailClose()
Syntax
SendMailEndData()
Description
Termine l'envoi d'un message.
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Voir également
SendMailConnect(), SendMailTo(), SendMailStartData(), SendMailWriteData(), SendMailFile(), SendMailEndData(), SendMailData(), SendMailClose()
Syntax
SendMailData(data)
U_ch **data;
Description
Envoie le message. Ce message contiendra les éventuels Subject, To ... qui seront traités par l'Agent Pop. Cette fonction appelle SendMailStartData(), SendMailWriteData() et SendMailEndData().
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Voir également
SendMailConnect(), SendMailTo(), SendMailStartData(), SendMailWriteData(), SendMailFile(), SendMailEndData(), SendMailData(), SendMailClose()
Syntax
SendMailClose()
Description
Déconnecte du serveur SMTP ouvert par SendMailConnect().
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Voir également
SendMailConnect(), SendMailTo(), SendMailStartData(), SendMailWriteData(), SendMailFile(), SendMailEndData(), SendMailData(), SendMailClose()
Syntax
SendMailInit(char *smtpsrv, char *fromaddr,
char *fromname, char *toaddr, char *subject)
Description
Démarre une session SMTP. Crée le socket et envoie les premières informations jusqu'au début de la section DATA.
La porte du serveur SMTP est définie par la variable globale int SENDMAIL_PORT. Par défaut, celle-ci est fixée à 25.
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Exemple
if(SendMailInit(argv[1], // serveur : mail.xon.be
argv[2], // From address : jmp@xon.be
argv[2], // From user name : Jean-Marc
argv[3], // To : bp@xon.be
"Essai" // subject
)) goto err;
// Si on veut un texte libre comme attach 1 (vu souvent comme body)
if(SendMailStartAttachTxt()) goto err;
SendMailAddAttachTxtLine("Début de mon texte", 1);
SendMailAddAttachTxtLine("------------------", 1);
SendMailAddAttachTxtLine("Line 1\nLigne 2\nLigne 3", 1);
SendMailAddAttachTxtLine("---\nFin.", 1);
// attacher des fichiers avec diff encoding
if(SendMailAttach("testmail.txt", "text/plain", 0, 1)) goto err;
if(SendMailAttach("testmail.txt", "text/plain", 64, 1)) goto err;
if(SendMailAttach("lastnode.gif", "image/gif", 1, 0)) goto err;
if(SendMailAttach("Euro.doc", "application/octet-stream", 1, 0)) goto err;
// Fin
if(SendMailEnd()) goto err;
printf("Ok\n");
return(0);
err:
printf("Error : %s\n", SENDMAIL_ERROR);
SendMailClose();
return(-1);
}
Voir également
SendMailInit(), SendMailEnd(), SendMailAttach(), SendMailStartAttachTxt(), SendMailAddAttachTxtLine()
Syntax
SendMailEnd()
Description
Termine une session SMTP démarrée par SendMailInit().
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Exemple
voir SendMailInit()
Voir également
SendMailInit(), SendMailEnd(), SendMailAttach(), SendMailStartAttachTxt(), SendMailAddAttachTxtLine()
Syntax
SendMailAttach(char *filename, char *contenttype, int encoding, int convertansi, int isbody)
Description
Attache un fichier au mail démarré par SendMailInit(). Un nombre quelconque de fichiers peuvent être attachés. L'encodage peut se faire selon les trois modes standards :
Attention, cette fonction ne peut être utilisée qu'après SendMailInit().
Valeur retournée
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Exemple
voir SendMailInit()
Voir également
SendMailInit(), SendMailEnd(), SendMailAttach(), SendMailStartAttachTxt(), SendMailAddAttachTxtLine()
Syntax
SendMailStartAttachTxt()
Description
Démarre un nouvel attachment de type texte. Le contenu de cet attachment doit être alimenté par la fonction SendMailAddAttachTxtLine(). Il s'agit en général du premier attachment d'un mail qui constituera le corps du message.
Attention, cette fonction ne peut être utilisée qu'après SendMailInit().
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Exemple
voir SendMailInit()
Voir également
SendMailInit(), SendMailEnd(), SendMailAttach(), SendMailStartAttachTxt(), SendMailAddAttachTxtLine()
Syntax
SendMailAddAttachTxtLine(char *txt, int convertansi)
Description
Ajoute un ligne à l'attachment courant commencé par l'appel à SendMailStartAttachTxt().
Le message d'erreur se trouve dans la variable globale SENDMAIL_ERROR.
Exemple
voir SendMailInit()
Voir également
SendMailInit(), SendMailEnd(), SendMailAttach(), SendMailStartAttachTxt(), SendMailAddAttachTxtLine()
char SENDMAIL_BUF[128];
Buffer de réception des réponses du serveur SMTP.
char SENDMAIL_ERROR[81];
Dernier message d'erreur.
int SENDMAIL_SOCKET;
Indique le numéro du socket ouvert.
Copyright © 1998-2015 Jean-Marc Paul and Bernard PAUL - Envoyez vos remarques ou commentaires à bernard@xon.be