This document in english.
L’utilisation de ce logiciel vous soumet à nos Conditions d’Utilisation et à notre Politique de Protection des Données.
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.
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.
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.
Installer l’extension OAuth2OOo.oxt
Vous devez d’abord installer cette extension, si elle n’est pas déjà installée.
Installer l’extension jdbcDriverOOo.oxt
Cette extension est nécessaire pour utiliser HsqlDB version 2.7.2 avec toutes ses fonctionnalités.
Si vous n’avez pas de source de données, vous pouvez:
Installer l’extension vCardOOo.oxt
Cette extension n’est nécessaire que si vous souhaitez utiliser vos contacts présents sur une plateforme Nextcloud comme source de données pour les listes de diffusion et la fusion de documents.
Installer l’extension gContactOOo.oxt
Cette extension n’est nécessaire que si vous souhaitez utiliser vos contacts téléphoniques personnels (contact Android) comme source de données pour les listes de diffusion et la fusion de documents.
Installer l’extension mContactOOo.oxt
Cette extension n’est nécessaire que si vous souhaitez utiliser vos contacts Microsoft Outlook comme source de données pour les listes de diffusion et la fusion de documents.
Installer l’extension HyperSQLOOo.oxt
Cette extension n’est nécessaire que si vous souhaitez utiliser un fichier Calc comme source de données pour les listes de diffusion et la fusion de documents. Voir: Comment importer des données depuis un fichier Calc.
Installer l’extension eMailerOOo.oxt
Redémarrez LibreOffice après l’installation.
Attention, redémarrer LibreOffice peut ne pas suffire.
soffice
et en utilisant la combinaison de touches Ctrl + C
si après l’arrêt de LibreOffice, le terminal n’est pas actif (pas d’invité de commande).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:
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.
Dans un document LibreOffice Writer aller à: Outils -> Add-ons -> Envoi de courriels -> Publiposter un document
Le chargement de la source de données de l’assistant Publipostage de courriels devrait apparaître :
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.
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.
Maintenant que votre nouvelle liste de diffusion est disponible dans la liste, vous devez la sélectionner.
Et ajouter les colonnes suivantes:
Uri
HomeEmail
, WorkEmail
et OtherEmail
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é.
Ce paramètrage ne doit être effectué que pour les nouvelles listes de diffusion.
Vous pouvez maintenant passer à l’étape suivante.
Les destinataires sont sélectionnés à l’aide de 2 boutons Tout ajouter
et Ajouter
permettant respectivement:
Carnet d'adresses
. Ceci permet lors d’un publipostage, que les modifications du contenu du groupe soient prises en compte. Une liste de diffusion n’accepte qu’un seul groupe.CTRL
. Cette sélection est immuable quelle que soit la modification des groupes du carnet d’adresses.Example de la sélection multiple:
Les destinataires sont désélectionnés à l’aide de 2 boutons Tout retirer
et Retirer
permettant respectivement:
CTRL
.Si vous avez sélectionné au moins 1 destinataire, vous pouvez passer à l’étape suivante.
Si cela n’est pas déjà fait, vous devez créer un nouvel expéditeur à l’aide du bouton Ajouter
.
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}
).
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.
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.
Dans LibreOffice aller à: Outils -> Add-ons -> Envoi de courriels -> Configurer la connexion
Assurez-vous de toujours quitter l’assistant avec le bouton Terminer
afin d’enregistrer les paramètres de connexion.
Dans LibreOffice aller à: Outils -> Add-ons -> Envoi de courriels -> Courriels sortants
Chaque travaux d’envoi possède 3 états différents:
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.
Lorsque le spouleur de courriel est démarré, son activité peut être visualisée dans le journal d’activité.
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…
LibreOffice 7.3.7.2 - Lubuntu 22.04 - Python version 3.10.12 - OpenJDK-11-JRE (amd64)
LibreOffice 7.5.4.2(x86) - Windows 10 - Python version 3.8.16 - Adoptium JDK Hotspot 11.0.19 (sous Lubuntu 22.04 / VirtualBox 6.1.38)
LibreOffice 7.4.3.2(x64) - Windows 10(x64) - Python version 3.8.15 - Adoptium JDK Hotspot 11.0.17 (x64) (sous Lubuntu 22.04 / VirtualBox 6.1.38)
LibreOffice 24.2.1.2 - Lubuntu 22.04
LibreOffice 24.8.0.3 (X86_64) - Windows 10(x64) - Python version 3.9.19 (sous Lubuntu 22.04 / VirtualBox 6.1.38)
Ne fonctionne pas avec OpenOffice voir dysfonctionnement 128569. N’ayant aucune solution, je vous encourrage d’installer LibreOffice.
Je vous encourage en cas de problème
de créer un dysfonctionnement
J’essaierai de le résoudre
com.sun.star.mail.MailServiceProvider
lors de la connexion au serveur SMTP et l’envoi d’un courriel.com.sun.star.mail.SpoolerService
lors de l’envoi de courriels.com.sun.star.sdb.RowSet
permettant:
Réécriture du Spouleur afin d’intégrer des fonctionnalités IMAP comme la création d’un fil récapitulant le publipostage et regroupant tous les courriels envoyés.
VARCHAR
et INTEGER
ou derivé.L’absence ou l’obsolescence des extensions OAuth2OOo et/ou jdbcDriverOOo nécessaires au bon fonctionnement de eMailerOOo affiche désormais un message d’erreur. Ceci afin d’éviter qu’un dysfonctionnement tel que le dysfonctionnement #3 ne se reproduise…
La base de données HsqlDB sous-jacente peut être ouverte dans Base avec: Outils -> Options -> Internet -> eMailerOOo -> Base de données.
Le menu Outils -> Add-ons s’affiche désormais correctement en fonction du contexte.
Encore plein d’autres choses…
Dans l’assistant de configuration de la connexion (IspDB Wizard) il est maintenant possible de désactiver la configuration IMAP.
En conséquence, cela n’envoie plus de fil de discussion (message IMAP) lors de la fusion d’un mailing.
Dans ce même assistant, il est désormais possible de saisir une adresse courriel de réponse.
Dans l’assistant de fusion d’email, il est désormais possible d’insérer des champs de fusion dans l’objet du courriel. Voir dysfonctionnement #6.
Dans le sujet d’un 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: {NomDeLaColonne}
).
Lors de la saisie du sujet du courriel, une erreur de syntaxe dans un champ de fusion sera signalée et empêchera la soumission du mailing.
Il est désormais possible dans le Spouleur de visualiser les courriels au format eml.
Un service com.sun.star.mail.MailUser permet désormais d’accéder à une configuration de connexion (SMTP et/ou IMAP) depuis une adresse courriel qui suite la rfc822.
Un autre service com.sun.star.datatransfer.TransferableFactory permet, comme son nom l’indique, la création de Transferable à partir d’un texte (string), d’une séquence binaire, d’une Url (file://…) ou un flux de données (InputStream).
Ces deux nouveaux services simplifient grandement l’API mail de LibreOffice et permettent d’envoyer des courriels depuis Basic. Voir le dysfonctionnement #4.
Vous trouverez une macro Basic vous permettant d’envoyer des emails dans : Outils -> Macros -> Editer les Macros… -> eMailerOOo -> SendEmail.
pip install requirements.txt
Cela devrait permettre d’implémenter une API tierce pour l’envoi de courriels simplement en modifiant le fichier de configuration Options.xcu.
Ajouter de nouvelles langues pour l’internationalisation…
Tout ce qui est bienvenu…