Trucs pour LaTeX & R

Envoyer ses résultats par mail.

vendredi 28 octobre 2016 par Philippe MICHEL

Dans le passé pour envoyer mes résultats à tous par mail j’ai utilisé du PHP, du Python mais au final autant rester dans R.

Pour envoyer des mails il faut un serveur SMTP (ça fait peur !) & un script capable de gérer une boucle qui va générer les mails & les passer au serveur.

Comme souvent mon exemple tourne sur une boucle en for ce qui n’est probablement pas le plus rapide. Un petit coup de sapply serait plus élégant. J’y travaille.

Créer un serveur mail

Ce paragraphe n’est valable que pour Linux. Tant pis pour les autres.

Créer un serveur SMTP sous Linux est très complexe :

  • Installer postfix avec le système de gestion des paquets de votre distribution.
    En exemple pour Debian taper (en root) :
    apt-get install postfix
  • Lors de l’installation une fenêtre vous demandera la configuration type du serveur de messagerie : choisir « Site Internet ».
    Voilà c’est fait. Si vous voulez fignoler un bon tuto.

Envoyer un mail personnalisé

Nous allons envoyer un mail commun à tous mais avec une pièce jointe différente pour chacun.
Les données (adresse mail, nom de la pièce jointe etc.) sont stockés dans une dataframe nommée groupe, habituellement issue d’un fichier csv. avec au moins deux colonnes :

  • fichier : adresse du fichier sur l’ordinateur
  • email : adresse mail du destinataire
  • La variable smtp de la fonction sendmail sera configurée avec les mêmes valeurs que celles que vous utilisez tous les jours dans votre logiciel de mail & qui vont été fournies par votre fournisseur d’accès internet ou autre.
  1. ff <- "<moi@machin.com>" # Adresse de l'expéditeur
  2. ll <- length(groupe$fichier)
  3.                                         #
  4. for (i in 1:ll){
  5.     too <- groupe$email[i]
  6.     att <- groupe$fichier[i]
  7.  #  
  8.     sendmail(
  9.         from <- ff ,
  10.         to <- too,
  11.         encoding = "utf-8",
  12.         subject <- "titre du mail",
  13.         body <- list("Bonjour,
  14. bla bla...
  15. Bien cordialement,
  16. Jean MACHIN",mime_part(att)), # corps du texte avec la pièce jointe
  17.         smtp = list(host.name = "smpt.jean.machin",
  18.                 port = 465,
  19.                 user.name = "jeannot",
  20.                 passwd = "xxxxxx",
  21.                 ssl = TRUE),
  22.         authenticate = TRUE,
  23.         send = TRUE
  24.     )
  25. }

Télécharger

Il n’y a plus qu’à faire tourner.


Accueil | Contact | Plan du site | | Statistiques du site | Visiteurs : 47 / 127561

Suivre la vie du site fr  Suivre la vie du site R   ?    |    titre sites syndiques OPML   ?

Site réalisé avec SPIP 3.2.1 + AHUNTSIC

Creative Commons License