eMailerOOo logo Documentation

This document in english.

L’utilisation de ce logiciel vous soumet à nos Conditions d’Utilisation et à notre Politique de Protection des Données.

version 1.2.7

Introduction:

eMailerOOo fait partie d’une Suite d’extensions LibreOffice et/ou OpenOffice permettant de vous offrir des services inovants dans ces suites bureautique.

Cette extension vous permet d’envoyer des documents dans LibreOffice sous forme de courriel, éventuellement par publipostage, à vos contacts téléphoniques.

Elle fournit en plus une API permettant d’envoyer des courriels en BASIC et supportant les technologies les plus avancées: protocole OAuth2, Mozilla IspDB, HTTP au lieu de SMTP/IMAP pour les serveurs Google…
Une macro SendEmail permettant d’envoyer des courriels est fournie à titre d’exemple. Si au préalable vous ouvrez un document, vous pouvez la lancer par:
Outils -> Macros -> Exécuter la macro… -> Mes macros -> eMailerOOo -> SendEmail -> Main -> Exécuter

Etant un logiciel libre je vous encourage:

Bref, à participer au developpement de cette extension.
Car c’est ensemble que nous pouvons rendre le Logiciel Libre plus intelligent.


Prérequis:

L’extension eMailerOOo utilise l’extension OAuth2OOo pour fonctionner.
Elle doit donc répondre aux prérequis de l’extension OAuth2OOo.

L’extension eMailerOOo utilise l’extension jdbcDriverOOo pour fonctionner.
Elle doit donc répondre aux prérequis de l’extension jdbcDriverOOo.

Sous Linux et macOS les paquets Python utilisés par l’extension, peuvent s’il sont déja installé provenir du système et donc, peuvent ne pas être à jour.
Afin de s’assurer que vos paquets Python sont à jour il est recommandé d’utiliser l’option Info système dans les Options de l’extension accessible par:
Outils -> Options -> Internet -> eMailerOOo -> Voir journal -> Info système
Si des paquets obsolètes apparaissent, vous pouvez les mettre à jour avec la commande:
pip install --upgrade <package-name>

Pour plus d’information voir: Ce qui a été fait pour la version 1.2.0.


Installation:

Il semble important que le fichier n’ait pas été renommé lors de son téléchargement.
Si nécessaire, renommez-le avant de l’installer.

Redémarrez LibreOffice après l’installation.
Attention, redémarrer LibreOffice peut ne pas suffire.


Utilisation:

Introduction:

Pour pouvoir utiliser la fonctionnalité de publipostage de courriels en utilisant des listes de diffusion, il est nécessaire d’avoir une source de données avec des tables ayant les colonnes suivantes:

De plus, cette source de données doit avoir au moins une table principale, comprenant tous les enregistrements pouvant être utilisés lors du publipostage du courriel.

Si vous ne disposez pas d’une telle source de données alors je vous invite à installer une des extensions suivantes :

Pour les 3 premières extensions le nom de la table principale peut être trouvé (et même changé avant toute connexion) dans:
Outils -> Options -> Internet -> Nom de l’extension -> Nom de la table principale

Ce mode d’utilisation est composé de 3 sections:

Publipostage de courriels avec des listes de diffusion:

Prérequis:

Pour pouvoir publiposter des courriels suivant une liste de diffusion, vous devez:

Ce document Writer peut inclure des champs de fusion (insérables par la commande: Insertion -> Champ -> Autres champs -> Base de données -> Champ de publipostage), cela est même nécessaire si vous souhaitez pouvoir personnaliser le contenu du courriel et d’eventuel fichiers attachés.
Ces champs de fusion doivent uniquement faire référence à la table principale de la source de données.

Si vous souhaitez utiliser un document Writer déja existant, vous devez vous assurer en plus que la source de données et la table principale sont bien rattachées au document dans : Outils -> Source du carnet d’adresses….

Si ces recommandations ne sont pas suivies alors la fusion de documents ne fonctionnera pas et ceci silencieusement.

Démarrage de l’assistant de publipostage de courriels:

Dans un document LibreOffice Writer aller à: Outils -> Add-ons -> Envoi de courriels -> Publiposter un document

eMailerOOo Merger screenshot 1

Sélection de la source de données:

Le chargement de la source de données de l’assistant Publipostage de courriels devrait apparaître :

eMailerOOo Merger screenshot 2

Les captures d’écran suivantes utilisent l’extension gContactOOo comme source de données. Si vous utilisez votre propre source de données, il est nécessaire d’adapter les paramètres par rapport à celle-ci.

Dans la copie d’écran suivante, on peut voir que la source de données gContactOOo s’appelle: Adresses et que dans la liste des tables la table: PUBLIC.Tous mes contacts est sélectionnée.

eMailerOOo Merger screenshot 3

Si aucune liste de diffusion n’existe, vous devez en créer une, en saisissant son nom et en validant avec: ENTRÉE ou le bouton Ajouter.

Assurez-vous lors de la création de la liste de diffusion que la table principale est toujours bien sélectionnée dans la liste des tables.
Si cette recommandation n’est pas suivie alors la fusion de documents ne fonctionnera pas et ceci silencieusement.

eMailerOOo Merger screenshot 4

Maintenant que votre nouvelle liste de diffusion est disponible dans la liste, vous devez la sélectionner.

Et ajouter les colonnes suivantes:

Si plusieurs colonnes d’adresses courriel sont sélectionnées, alors l’ordre devient pertinent puisque le courriel sera envoyé à la première adresse disponible.
De plus, à l’étape Sélection des destinataires de l’assistant, dans l’onglet Destinataires disponibles, seuls les enregistrements avec au moins une colonne d’adresse courriel saisie seront répertoriés.
Assurez-vous donc d’avoir un carnet d’adresses avec au moins un des champs d’adresse e-mail (Home, Work ou Other) renseigné.

eMailerOOo Merger screenshot 5

Ce paramètrage ne doit être effectué que pour les nouvelles listes de diffusion.
Vous pouvez maintenant passer à l’étape suivante.

Sélection des destinataires:

Destinataires disponibles:

Les destinataires sont sélectionnés à l’aide de 2 boutons Tout ajouter et Ajouter permettant respectivement:

eMailerOOo Merger screenshot 6

Example de la sélection multiple:

eMailerOOo Merger screenshot 7

Destinataires sélectionnés:

Les destinataires sont désélectionnés à l’aide de 2 boutons Tout retirer et Retirer permettant respectivement:

eMailerOOo Merger screenshot 8

Si vous avez sélectionné au moins 1 destinataire, vous pouvez passer à l’étape suivante.

Sélection des options d’envoi:

Si cela n’est pas déjà fait, vous devez créer un nouvel expéditeur à l’aide du bouton Ajouter.

eMailerOOo Merger screenshot 9

La création du nouvel expéditeur est décrite dans la section Configuration de la connexion.

Le courriel doit avoir un sujet. Il peut être enregistré dans le document Writer.
Vous pouvez insérer des champs de fusion dans l’objet du courriel. Un champ de fusion est composé d’une accolade ouvrante, du nom de la colonne référencée (sensible à la casse) et d’une accolade fermante (ie: {NomColonne}).

eMailerOOo Merger screenshot 10

Le courriel peut éventuellement contenir des fichiers joints. Ils peuvent être enregistrés dans le document Writer.
La capture d’écran suivante montre 1 fichier joint qui sera fusionné sur la source de données puis converti au format PDF avant d’être joint au courriel.

eMailerOOo Merger screenshot 11

Assurez-vous de toujours quitter l’assistant avec le bouton Terminer pour confirmer la soumission des travaux d’envoi.
Pour envoyer les travaux d’envoi, veuillez suivre la section Courriels sortants.

Configuration de la connexion:

Démarrage de l’assistant de connexion:

Dans LibreOffice aller à: Outils -> Add-ons -> Envoi de courriels -> Configurer la connexion

eMailerOOo Ispdb screenshot 1

Sélection du compte:

eMailerOOo Ispdb screenshot 2

Trouver la configuration:

eMailerOOo Ispdb screenshot 3

Configuration SMTP:

eMailerOOo Ispdb screenshot 4

Configuration IMAP:

eMailerOOo Ispdb screenshot 5

Tester la connexion:

eMailerOOo Ispdb screenshot 6

Assurez-vous de toujours quitter l’assistant avec le bouton Terminer afin d’enregistrer les paramètres de connexion.

Courriels sortants:

Démarrage du spouleur de courriels:

Dans LibreOffice aller à: Outils -> Add-ons -> Envoi de courriels -> Courriels sortants

eMailerOOo Spooler screenshot 1

Liste des courriels sortants:

Chaque travaux d’envoi possède 3 états différents:

eMailerOOo Spooler screenshot 2

Le spouleur de courriels est arrêté par défaut. Il doit être démarré avec le bouton Démarrer / Arrêter pour que les courriels en attente soient envoyés.

Journal d’activité du spouleur:

Lorsque le spouleur de courriel est démarré, son activité peut être visualisée dans le journal d’activité.

eMailerOOo Spooler screenshot 3


Envoi de courriel avec une macro LibreOffice en Basic:

Il est possible d’envoyer des courriels à l’aide de macros écrites en Basic. L’envoi d’un courriel nécessite une macro de quelques 50 lignes de code et pourra supporter la plupart des serveurs SMTP/IMAP.
Voici le code minimum nécessaire pour envoyer un courriel avec des fichiers joints.

Sub Main

    Rem Demandez à l’utilisateur une adresse courriel d’expéditeur.
    sSender = InputBox("Veuillez saisir l'adresse courriel de l'expéditeur")
    Rem L'utilisateur a cliqué sur Annuler.
    if sSender = "" then
        exit sub
    endif

    Rem Demandez à l'utilisateur l'adresse courriel du destinataire.
    sRecipient = InputBox("Veuillez saisir l'adresse courriel du destinataire")
    Rem L'utilisateur a cliqué sur Annuler.
    if sRecipient = "" then
        exit sub
    endif

    Rem Demandez à l'utilisateur le sujet du courriel.
    sSubject = InputBox("Veuillez saisir l'objet du courriel")
    Rem L'utilisateur a cliqué sur Annuler.
    if sSubject = "" then
        exit sub
    endif

    Rem Demander à l'utilisateur le contenu du courriel.
    sBody = InputBox("Veuillez saisir le contenu du courriel")
    Rem L'utilisateur a cliqué sur Annuler.
    if sBody = "" then
        exit sub
    endif

    Rem Ok, maintenant que nous avons tout, nous commençons à envoyer un email.

    Rem Nous utiliserons 4 services UNO qui sont:
    Rem - com.sun.star.mail.MailUser: C'est le service qui va assurer la bonne configuration
    Rem des serveurs SMTP et IMAP (on peut remercier Mozilla pour la base de données ISPBD que j'utilise).
    Rem - com.sun.star.mail.MailServiceProvider: il s'agit du service qui vous permet d'utiliser les serveurs
    Rem SMTP et IMAP. Nous utiliserons ce service à l'aide du service précédent.
    Rem - com.sun.star.datatransfer.TransferableFactory: Ce service est une forge pour la création de
    Rem Transferable qui sont la base du corps de l'email ainsi que de ses fichiers joints.
    Rem - com.sun.star.mail.MailMessage: il s'agit du service qui implémente le message électronique.
    Rem Maintenant que tout est clair, nous pouvons commencer.


    Rem Nous créons d’abord l’email.

    Rem Il s'agit de notre forge de transférable, elle simplifie grandement l'API de messagerie de LibreOffice...
    oTransferable = createUnoService("com.sun.star.datatransfer.TransferableFactory")

    Rem oBody est le corps du courriel. Il est créé ici à partir d'une chaîne de caractères mais pourrait également
    Rem avoir été créé à partir d'un InputStream, d'une URL de fichier (file://...) ou d'une séquence d'octets.
    oBody = oTransferable.getByString(sBody)

    Rem oMail est le message électronique. Il est créé à partir du service com.sun.star.mail.MailMessage.
    Rem Il peut être créé avec une pièce jointe avec la méthode createWithAttachment().
    oMail = com.sun.star.mail.MailMessage.create(sRecipient, sSender, sSubject, oBody)

    Rem Demandez à l'utilisateur les URL des fichiers joints.
    oDialog = createUnoService("com.sun.star.ui.dialogs.FilePicker")
    oDialog.setMultiSelectionMode(true)
    if oDialog.execute() = com.sun.star.ui.dialogs.ExecutableDialogResults.OK then
        oFiles() = oDialog.getSelectedFiles()
        Rem Ces deux services sont simplement utilisés pour obtenir un nom de fichier approprié.
        oUrlTransformer = createUnoService("com.sun.star.util.URLTransformer")
        oUriFactory = createUnoService("com.sun.star.uri.UriReferenceFactory")
        for i = lbound(oFiles()) To ubound(oFiles())
            oUri = getUri(oUrlTransformer, oUriFactory, oFiles(i))
            oAttachment = createUnoStruct("com.sun.star.mail.MailAttachment")
            Rem Il faut saisir ReadableName. Il s'agit du nom du fichier joint
            Rem tel qu'il apparaît dans l'e-mail. Ici, nous obtenons le nom du fichier.
            oAttachment.ReadableName = oUri.getPathSegment(oUri.getPathSegmentCount() - 1)
            Rem La pièce jointe est récupérée à partir d'une URL mais comme pour oBody elle peut être
            Rem récupérée à partir d'une chaîne de caractères, d'un InputStream ou d'une séquence d'octets.
            oAttachment.Data = oTransferable.getByUrl(oUri.getUriReference())
            oMail.addAttachment(oAttachment)
            next i
    endif
    Rem Fin de la création du courriel.


    Rem Maintenant, nous devons envoyer le courriel.

    Rem Nous créons d'abord un MailUser à partir de l'adresse de l'expéditeur. Il ne s'agit pas nécessairement de
    Rem l'adresse de l'expéditeur, mais elle doit suivre la rfc822 (ie: surnom <nom@fai.com>).
    Rem L'assistant IspDB sera automatiquement lancé si cet utilisateur n'a jamais été configuré.
    oUser = com.sun.star.mail.MailUser.create(sSender)
    Rem L'utilisateur a annulé l'assistant IspDB.
    if isNull(oUser) then
        exit sub
    endif

    Rem Maintenant que nous avons l’utilisateur, nous pouvons vérifier s’il souhaite utiliser une adresse de réponse.
    if oUser.useReplyTo() then
        oMail.ReplyToAddress = oUser.getReplyToAddress()
    endif
    Rem De la même manière, je peux tester si l'utilisateur a une configuration IMAP avec oUser.supportIMAP()
    Rem puis créer un courriel de regroupement si nécessaire. Dans ce cas, vous devez :
    Rem - Construire un courriel de regroupement (comme précédemment pour oMail).
    Rem - Créer et vous connecter à un serveur IMAP (comme nous le ferons pour SMTP).
    Rem - Télécharger ce courriel sur le serveur IMAP avec: oServer.uploadMessage(oServer.getSentFolder(), oMail).
    Rem - Une fois téléchargé, récupérer le MessageId avec la propriété oMail.MessageId.
    Rem - Définir la propriété oMail.ThreadId sur MessageId pour tous les courriels suivants.
    Rem Super, vous avez réussi à regrouper l'envoi de courriels dans un courriel de regroupement.

    Rem Pour envoyer l'e-mail, nous devons créer un serveur SMTP. Voici comment procéder :
    SMTP = com.sun.star.mail.MailServiceType.SMTP
    oServer = createUnoService("com.sun.star.mail.MailServiceProvider").create(SMTP)
    Rem Nous nous connectons maintenant en utilisant la configuration SMTP de l'utilisateur.
    oServer.connect(oUser.getConnectionContext(SMTP), oUser.getAuthenticator(SMTP))
    Rem Et bien ça y est, nous sommes connectés, il ne reste plus qu'à envoyer le courriel.
    oServer.sendMailMessage(oMail)
    Rem N'oubliez pas de fermer la connexion.
    oServer.disconnect()
    MsgBox "Le courriel a été envoyé avec succès." & chr(13) & "Son MessageId est: " & oMail.MessageId
    Rem Et voilà, le tour est joué...

End Sub


Function getUri(oUrlTransformer As Variant, oUriFactory As Variant, sUrl As String) As Variant
    oUrl = createUnoStruct("com.sun.star.util.URL")
    oUrl.Complete = sUrl
    oUrlTransformer.parseStrict(oUrl)
    oUri = oUriFactory.parse(oUrlTransformer.getPresentation(oUrl, false))
    getUri = oUri
End Function

Et voilà, le tour est joué, cela n’a pris que quelques lignes de code alors profitez-en…
Par contre, ce n’est qu’un exemple de vulgarisation, et tous les contrôles d’erreurs nécessaires ne sont pas en place…


A été testé avec:

Je vous encourage en cas de problème :confused:
de créer un dysfonctionnement
J’essaierai de le résoudre :smile:


Historique:

Ce qui a été fait pour la version 0.0.1:

Ce qui a été fait pour la version 0.0.2:

Ce qui a été fait pour la version 0.0.3:

Ce qui a été fait pour la version 1.0.0:

Ce qui a été fait pour la version 1.0.1:

Ce qui a été fait pour la version 1.0.2:

Ce qui a été fait pour la version 1.1.0:

Ce qui a été fait pour la version 1.1.1:

Ce qui a été fait pour la version 1.2.0:

Ce qui a été fait pour la version 1.2.1:

Ce qui a été fait pour la version 1.2.2:

Ce qui a été fait pour la version 1.2.3:

Ce qui a été fait pour la version 1.2.4:

Ce qui a été fait pour la version 1.2.5:

Ce qui a été fait pour la version 1.2.6:

Ce qui a été fait pour la version 1.2.7:

Que reste-t-il à faire pour la version 1.2.7: