Présentation
Documentation
L'équipe
Sérialisation
 
Programmes
Objets
Libs Utilitaires
Libs Internes
   
 
Editeur
Syntaxes
Windows
Versions
   

SCR/AL1 - TOME III. Les librairies utilitaires

22. Le groupe s_ipc

22.4 Accès SMTP

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

22.4.1 SendMailConnect (file s_smtp.c:136)

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()

22.4.2 SendMailTo (file s_smtp.c:249)

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()

22.4.3 SendMailStartData (file s_smtp.c:287)

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()

22.4.4 SendMailWriteData (file s_smtp.c:327)

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()

22.4.5 SendMailFile (file s_smtp.c:388)

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()

22.4.6 SendMailEndData (file s_smtp.c:307)

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()

22.4.7 SendMailData (file s_smtp.c:359)

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()

22.4.8 SendMailClose (file s_smtp.c:220)

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()

22.4.9 SendMailInit (file s_smtp.c:622)

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()

22.4.10 SendMailEnd (file s_smtp.c:645)

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()

22.4.11 SendMailAttach (file s_smtp.c:753)

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()

22.4.12 SendMailStartAttachTxt (file s_smtp.c:677)

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()

22.4.13 SendMailAddAttachTxtLine (file s_smtp.c:710)

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()

22.4.14 SENDMAIL_BUF

    char    SENDMAIL_BUF[128];

Buffer de réception des réponses du serveur SMTP.

22.4.15 SENDMAIL_ERROR

    char    SENDMAIL_ERROR[81];

Dernier message d'erreur.

22.4.16 SENDMAIL_SOCKET

    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