
Envoyez un email via SAS
février 11, 2008Lorsque vous écrivez un programme devant être exécuté de manière régulière, disons une routine pour faire un transfert de base de données, vous pouvez communiquer par email à votre collègue, en charge de la base, toute incohérence détectée. Je vous invite à essayer l’exemple détaillé plus loin, qui fait appel au jeu de données CLASS, disponible dans la bibliothèque SASHELP de SAS. Avec lui, un email est envoyé si un élève répertorié a 15 ans. Mais auparavant, je vous propose de comprendre le mécanisme pour envoyer un email.
1. Ecrire son message : vous écrivez via un DATA _NULL_ et des instructions (statement) PUT votre message.
2. Préciser la destination du message : puis vous indiquez vers quelle la destination votre message doit être envoyé, via le FILE statement. Si aucune incohérence n‘est détectée, vous ferez une sortie classique vers le listing (file print;). Sinon vous l’adresserez vers une référence extérieure, qu’on appellera dans notre exemple MEMO (file memo;), définie dans le FILENAME statement.
3. Créer un data set de référence : pour savoir si une incohérence existe, vous vous référerez à un data set, qui contiendra la liste des incohérences, via l’instruction SET. Lorsqu’il est vide, aucun message ne sera envoyé.
4. Alternez entre vos deux sorties via une macro variable : par défaut, il n’y aura pas d’email envoyé (file print;). Pour alterner entre les deux sorties possibles du message, on utilisera une macro variable définie dans un premier temps égal à PRINT (%let email_out=print;). Puis on changera cette valeur si besoin dans une procédure SQL avec INTO :.
5. Définir l’entête de votre email via deux mots-clés : le FILENAME statement contiendra un nom de référence. J’ai choisi MEMO ici. Puis l’email du destinataire après le mot-clé EMAIL sera listé entre guillemets. Et enfin, on ajoutera l’objet du mail via SUBJECT=’ ‘.
%let email_out=print ; proc sql noprint; create table incoherences as select *, 'memo' as outp from sashelp.class where age=15 order by name; select distinct outp into :ema_out from incoherence; quit; filename memo email 'veronique.bourcier@sasreference.fr' subject = 'Exemple de programme '; data _null_ ; set incoherences ; file &email_out. ; if _N_=1 then do; put 'Dear Administrator '; put // 'The SASHELP.CLASS table has ages equal to 15.'; put // 'Records are listed below. '; put // 'Kind Regards, '; put /; end; put / NAME=; run;
Publié dans Data Presentation, Data Step, Les procédures, Par Etapes, Par niveaux, Par thématique, proc sql, SAS intermédiaire | Tagué %put, data _null_, email, envoyer, filename, informatique, message, object, programmation, SAS, statement, subject |
Merci encore pour vos tutoriels!!
Je voulais juste signaler une miniscule erreur dans votre code. Dans la Proc SQL vous créez la table « incohérence » alors que dans l’tape data pour faire appel à cette même table vous faite un set « incohérenceS ». Il y a un « S » en trop (ou en moins).
Merci encore
Merci pour le feedback. Je viens de faire la correction. En prime j’ai ajouté les couleurs au programme.
Véronique
le code ci-dessous permet juste d’avopir un message dans le output …
mais envoyer par mail …
y a t-il besoin d’une connexion au serveur de la boite mail …
comment procède t-on pour recvoir le message dans sa boite mail ??
Voici le lien proposé par Ikram :
http://www.commentcamarche.net/forum/affich-9984745-envoi-de-plusieurs-emails-via-sas
Merci pour votre blog !
Pouvez vous m’indiquer comment envoyer un mail en copie ou copie cachée ?
Je viens de réussir d’envoyer un mail en remplaçant la ligne :
file &email_out. ; par file memo;
Il me semble que la première ligne envoie le résultat dans l’ouput ce qui est utile pour les tests, et que la deuxième ligne envoie réellement le mail.
Bonjour,
Je voue prie de bien.vouloir m’indiquer un code pour envoyer un fichier html ou Excel par mail a une date donnée.
Je fais une relance chaque jour et comme on me demande de relancer également le samedi je veux l’automatiser dans la semaine pour qu’elle soit lancée le samedi et envoyer la donnée de sortie.
Je vous remercie par avance
Bonjour, connaitriez-vous l’option qui permet de voir les mails envoyés dans la boite des éléments envoyés ? Pas de trace des mails, alors ma parade c’est de mettre l’adresse d’envoi en copie cachée (bcc=), pas terrible… Merci d’avance pour votre aide.