[Résolu][Calc] Envoi de courriel via GMail

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

[Résolu][Calc] Envoi de courriel via GMail

Message par bgault »

Bonjour

Je crée un fichier comportant une liste de noms associée à une liste d'adresse de messagerie et à une liste de fichiers.
A partir de ces éléments je veux créer une commande qui envoie, par messagerie, à chaque personne le fichier portant son nom à son adresse de messagerie.

Pour ce faire, j'ai testé les macros du Suprême de code 39844 :
https://forum.openoffice.org/fr/forum/v ... 15&t=39844

J'ai copié les 3 codes proposés dans un fichier vierge : test2-ods

J'ai placé des adresses valides dans le code.
Le premier me renvoie le message : "Erreur d'éxécution du basic variable d'objet non définie" sur la ligne

Code : Tout sélectionner

Courrier.CcRecipient = "toto@free.fr"'Copie A
Avec le second et le troisième je ne vois rien se faire et je ne reçois pas les messages attendus

Je joins le fichier test-2.ods.
test-2.ods
Quelqu'un pourrait-il me débloquer sur ces codes ?


Sur un autre message j'ai trouvé les documents : MailserviceProvider_EnvoiAuto.ods et MailserviceProvider_EnvoiAuto_Correction1.ods

Je mets des adresses valides, je remplis correctement les paramètres dans Sendmail.
Dans la fenêtre qui s'ouvre je sélectionne les destinataires,l'objet et une pièce jointe.
Lorsque je clique sur envoi courrier, rien ne se passe.

Quel oubli ai-je fais ? et comment corriger ?
MailserviceProvider_EnvoiAuto_Correction1.ods
MailserviceProvider_EnvoiAuto.ods
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par Bidouille le 14 oct. 2015 07:29, modifié 3 fois.
Raison : Résolu] remplace [Resolu]+ ajout de la coche
openoffice 4.1.1 sous Windows 7
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12668
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [Calc]Problème d'envoi de courriel Aoo

Message par Bidouille »

Bonjour,

Pour la bonne tenue de ce forum, veillez à ne pas employer de terme implicite comme "problème" ou "Aoo".

Dans votre signature, il y a écrit :openoffice 4.01 sous Windows 7
Votre signature indique une version obsolète.
Commencez par vous mettre à jour en suivant le tutoriel dédié à votre système :
https://forum.openoffice.org/fr/forum/v ... m.php?f=38
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

Merci pour les conseils.
Je viens de mettre à jour vers la dernière version.
openoffice 4.1.1 sous Windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25979
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Envoi de courriel : objet non défini

Message par Dude »

Salut,
bgault a écrit :j'ai testé les macros du Suprême de code 39844
Dans un 1er temps, prends le temps de copier correctement le script exposé.

Code : Tout sélectionner

Courrier.CcRecipient = "toto@free.fr"'Copie A
Sers toi de XRay pour voir comment se type la propriété CcRecipient :
_error.png
Cela montre notamment la variable attendue.
Un tableau n'est pas une chaîne.

Merci d'ajouter [Résolu] au début du titre de ton 1er message sans oublier de cocher la case de l'icône de sujet (le V vert).
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

Je ne comprends pas bien ta réponse.
1- Prends le temps de copier correctement le code
:
de quelle macro parles-tu ? envoi ? envoi2? ou envoi 3?
Je n'ai fait que copier coller donc pas d'erreur de frappe.

Je parle de la macro envoi :

ensuite j'ai mis mon adresse de messagerie à la place de toto@free.fr dans les deux lignes de code :

Code : Tout sélectionner

Courrier.Recipient = "toto@free.fr"'Adresse
Courrier.CcRecipient = "toto@free.fr"'Copie A
Je parle des autres macros envoi2 et envoi3:

Code : Tout sélectionner

Courrier.CcRecipient = Array("toto.fr")'CopieA
Courrier.BccRecipient = Array("toto@free.fr")'CopieA
Effectivement le code change et on y trouve un tableau. Je ne sais pas pourquoi ?
mais cette fois je n'ai pas de code d'erreur et il ne se passe rien.

Pour ce qui est de Xray, je découvre qu'il s'agit d'une macro à installer.
je l'ai donc installée et je vais essayer de comprendre ce qu'elle fait.

A suivre
openoffice 4.1.1 sous Windows 7
Philippe BRONCHART
Membre cOOnfirmé
Membre cOOnfirmé
Messages : 244
Inscription : 17 janv. 2007 19:18
Localisation : Lille(59) - Lesboeufs (80)

Re: [Calc] Envoi de courriel : objet non défini

Message par Philippe BRONCHART »

Bonjour,
Effectivement le code change et on y trouve un tableau. Je ne sais pas pourquoi ?
Effectivement, pas forcément clair pour le néophyte.

Tout simplement car :

CcRecipient n'accepte que des données que sous forme de tableau. ( ce qui est logique puisque tu peux avoir plusieurs destinataires en copie ...)
Dans xray, tu as l'indication par

Code : Tout sélectionner

 [] string
et non

Code : Tout sélectionner

string
Donc

Code : Tout sélectionner

contenu.CcRecipient=("toto@free.fr")
est incorrect ( pas de tableau)

Code : Tout sélectionner

contenu.CcRecipient=Array("toto@free.fr")
est correct: un tableau à un seul élément. Mais un tableau ( array) quand même...

Code : Tout sélectionner

 contenu.CcRecipient=Array("toto@free.fr","toto2@free.fr", "Toto3.free@fr")
est correct : un tableau à 3 éléments

Reposte ton dernier fichier,
mais cette fois je n'ai pas de code d'erreur et il ne se passe rien.
C'est à dire ?
Amicalement Philippe BRONCHART

Win 10 Libre office 5.0 (perso)
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 948
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Envoi de courriel : objet non défini

Message par luky-luke »

Bonjour
En complément à la réponse de Philippe. Dans le fichier MailserviceProvider_EnvoiAuto.ods, il y a également une erreur 91 (Variable d'objet non défini) sur l'ajout de pièce jointe. Quand il n'y en a qu'une, la variable est reconnue comme une simple chaine de caractère et non pas comme un tableau, ce qui provoque une erreur dans la macro sendmail mais également dans la macro Addattachement, le code cherche une limite de tableau UBound qui n’existe pas. Quand il n'y a pas de pièce jointe ou si il y en a deux, le code fonctionne.
Il faut modifier le traitement d'erreur. J'y regarde ce soir, pas le temps dans la journée !

Cordialement
Luke
Dernière modification par luky-luke le 26 août 2015 10:05, modifié 1 fois.
LibO 7.4.7.2 Raspberry pi et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25979
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Envoi de courriel : objet non défini

Message par Dude »

bgault a écrit :mais cette fois je n'ai pas de code d'erreur et il ne se passe rien.
Ton script envoi fonctionne comme attendu sous AOO 4.1.1 :
_no_problemo.png
L'exécution lance un dialogue pour l'envoi d'un courriel.
Cela marche dès lors qu'un logiciel est paramétré par Windows pour cette tâche.
Commence déjà par vérifier ce point dans ton panneau de configuration :
_win7.png
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

La macro envoi fonctionne correctement si j'utilise le smtp de gmail par contre, je n'arrive pas à configurer celui de free mais ce n'est pas important pour l'instant.
Lorsque je vais chez gmail je vois que les messages ont été envoyés mais au bout de 30 minutes je n'ai toujours récupéré le message sur l'adresse d'envoi chez free ! attendons !
par contre un message envoyé sur une autre adresse est bien arrivé à destination donc tout est parfait.

Ce qui m'embête un peu c'est que j'ai une fenêtre d'affichage de thunderbird et que je dois cliquer sur envoyer.
Si je veux créer une boucle pour envoyer 25 courriers avec des fichiers joints différents cela va me poser un problème.

Comment procéder pour que l'envoi se fasse directement ?

Apparemment les macro envoi2 et envoi3 devraient permettre ceci mais chez moi lorsque je les exécute, il ne se passe rien.
Cela me semble normal car le if qui gère le choix du système me semble terminer au mauvais endroit.
Si je suis sous windows il ne gère pas les paramètres de courrier donc il ne fait rien.
J'ai donc déplacé le endif:

Code : Tout sélectionner

 Sub envoi2
Dim Messagerie As Object, Client As Object, Courrier As Object
       If GetGUIType = 1 Then
          Messagerie = CreateUnoService("com.sun.star.system.SimpleSystemMail")'version Windows Aoo3/Libo3 & LibO4
       Else
          Messagerie = CreateUnoService("com.sun.star.system.SimpleCommandMail")'Version Linux Aoo3/LibO3 & LibO4
       End if
          Client = Messagerie.querySimpleMailClient()
          Courrier = Client.createSimpleMailMessage()
          Courrier.Subject = "Test LibO4 et SystemMailProvider, envoi2 OO 4.1.1"'Sujet   
          Courrier.Recipient = "bernard.gault.fr"'Adresse
          Courrier.CcRecipient = Array("bernard.gault.fr")'CopieA
          Courrier.BccRecipient = Array("bernard.gault@free.fr")'CopieA
          Courrier.Attachement = Array("")'PcsJt()
          Client.sendSimpleMailMessage(Courrier,0)
       'End if
End sub
mais je reçois un message d'erreur sur la ligne

Code : Tout sélectionner

          Client = Messagerie.querySimpleMailClient()
Erreur d'exécution du basic, variable d'objet non définie
openoffice 4.1.1 sous Windows 7
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 948
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Envoi de courriel : objet non défini

Message par luky-luke »

Bonjour
bgault a écrit :mais je reçois un message d'erreur sur la ligne

Code : Tout sélectionner

Client = Messagerie.querySimpleMailClient()
Erreur d'exécution du basic, variable d'objet non définie
Oui, c'est normal. Prends le temps de lire les commentaires dans la macro :evil: . La sub envoi2 ne fonctionne pas pour AOO4.

Quant au fichier MailserviceProvider_EnvoiAuto.ods, il te permet d'envoyer d'une façon automatique les courriels. Si tu patiente un peu, je poste une correction ce soir 8)
 Ajout : 20h35 
Dans le fichier joint, ajout d'une gestion d'erreur dans la fonction AddAttachments et unification du nom de la variable des URL des fichiers joints.
Le fichier est testé pour les versions AOO 4.1.1 et LibO 4.3.6.2 (officiel) avec Thunderbird par défaut, c'est glop !. Par contre avec LibO 4.4.2.2 (officiel), une erreur sur l'authentification, stop l'envoi, pas glop !
La suite, si il y en a une dans les suprêmes

Cordialement
Luke
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par luky-luke le 29 août 2015 07:40, modifié 1 fois.
LibO 7.4.7.2 Raspberry pi et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

Bonjour
Je viens de tester ton dernier envoi.

Je remplis, correctement il me semble le paramétrage comme indiqué dans la macro SendMail.
Je remplis des adresses valide dans la feuille1
Je clique sur le bouton et sélectionne mes éléments.
lorsque je clique sur envoyer courrier, rien ne se passe.
La fenêtre de dialogue reste ouverte et aucun message d'erreur.

J'ai du zapper quelque chose ?
openoffice 4.1.1 sous Windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25979
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Envoi de courriel : objet non défini

Message par Dude »

Tu as bien sûr fait ce qui est demandé.
A savoir :
Dans la cellule B10, il y a écrit :Avant de vous servir de la macro
Il faut écrire les paramètres de connexion
suivant dans la macro SendMail :
Votre mot de passe
Votre nom d'utilisateur
Votre adresse de courriel
Le serveur SMTP (ex : smtp.orange.fr )
Le port utilisé (25 en général)
La sécurité (SSL ou INSECURE)
Une chose m'interpelle sur ce que tu as écrit plus haut :
bgault a écrit :Si je veux créer une boucle pour envoyer 25 courriers avec des fichiers joints différents cela va me poser un problème.
La plupart des SMTP n'aime pas les envois en masse et une temporisation est souvent nécessaire.
Assure toi auprès de ton FAI que tu n'as pas de restriction de ce côté là.
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

Je pense avoir mis les bons paramètres :

Const UserName$ = "mon nom" : mon nom d'utilisateur pour cette messagerie
Const Useradress$ = "toto@gmail.com" : mon adresse sur cette messagerie
Const ServerName$ = "smtp.gmail.com" : le nom du serveur smtp
Const smtpPassword$ = "motdepasse" : mon mot de passe pour cette messagerie
Const ServerPort = 587 'le cas le plus général : j'ai essayé 587 et aussi 25
Const ServerSecure$ = "STARTSL" '"Insecure" 'ou "SSL" : j'ai tout essayé
REM =====================

toujours le même résultat, aucun message d'erreur, la fenêtre de choix reste ouverte, rien ne se passe.
Suite à ta remarque, J'ai aussi essayé en ne sélectionnant qu'un seul destinaire.
Dernière modification par bgault le 29 août 2015 09:08, modifié 1 fois.
openoffice 4.1.1 sous Windows 7
sabrina21000
Membre hOOnoraire
Membre hOOnoraire
Messages : 133
Inscription : 09 mars 2012 10:14

Re: [Calc] Envoi de courriel : objet non défini

Message par sabrina21000 »

Bonjour,
Je me permets d'intervenir car le sujet m ' interresse aussi beaucoup.
J'ai testé le fichier et je confirme les effets decrient par bgault.
Version: libreoffice 7.2.7(x64)
,windows 10 X64
Avatar de l’utilisateur
luky-luke
InconditiOOnnel
InconditiOOnnel
Messages : 948
Inscription : 27 nov. 2010 00:17
Localisation : gâtine deux-sèvrienne

Re: [Calc] Envoi de courriel : objet non défini

Message par luky-luke »

Bonjour
bgault a écrit :Je pense avoir mis les bons paramètres :
sabrina21000 a écrit :J'ai testé le fichier et je confirme les effets decrient par bgault.
C'est normal, Il faut écrire vos paramètres de messagerie dans la macro et non pas les miens, que j'ai laissé par erreur dans le précédent fichier.:lol:
Vous trouverez vos paramètres de messagerie dans le menu de configuration de votre courrielleur.

Cordialement
Luke
LibO 7.4.7.2 Raspberry pi et Libo 7.6.5.2 LinuxMint 22
Xray ne tient pas lieu de tout, mais une pratique sans Xray ne vaut pas grand chose
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

C'est bien ce que j'ai fait, ce ne sont pas tes paramètres que j'ai mis, ce sont les miens !
openoffice 4.1.1 sous Windows 7
kikoo74910
Membre hOOnoraire
Membre hOOnoraire
Messages : 176
Inscription : 03 août 2012 09:45

Re: [Calc] Envoi de courriel : objet non défini

Message par kikoo74910 »

je confirme,

Avec les protocoles SMTP de gmail et outlook activés qui fonctionne habituellement chez moi notement avec thunderbird,cela ne fonctionne pas .Que ce soit port 25 ou 587.
Par contre niveau securité les FAI parle de TLS au lieu de SSL ou Insecure.Peut-etre un lien ?
Version: librroffice 7.5.9; windows 10(x64)
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

ce qui me chiffonne, c'est que la fenêtre de choix reste ouverte et que rien ne se passe.
Aucun message d'erreur, ni du basic, ni du serveur !

Alors que la macro Envoi fonctionne très bien avec thunderbird qui utilise le serveur smtp.gmail.com sur le port 25
Je rappelle le code ici :

Code : Tout sélectionner

    Sub envoi
    Dim Messagerie As Object, Client As Object, Courrier As Object
       Messagerie = CreateUnoService("com.sun.star.system.SystemMailProvider")'Version Windows/Linux Aoo4
       Client = Messagerie.queryMailClient()
       Courrier = Client.createMailMessage()   
          Courrier.Subject = "Test LibO4 et SystemMailProvider"'Sujet   
          Courrier.Recipient = "bernard.gault@gmail.com"'Adresse
          'Courrier.CcRecipient = Array("")'CopieA
          'Courrier.BccRecipient = Array("")'CopieA
          'Courrier.Attachement = Array("")'PcsJt()
          Courrier.body = "ceci est un test:envoi test-2.ods avec OO 4,1 le 28 à 18h"'Texte
          Client.sendMailMessage(Courrier,0)'Flag inopérant
    End Sub
openoffice 4.1.1 sous Windows 7
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25979
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Envoi de courriel : objet non défini

Message par Dude »

bgault a écrit :Alors que la macro Envoi fonctionne très bien avec thunderbird qui utilise le serveur smtp.gmail.com sur le port 25
Ce qui me chiffonne, c'est que tu ne lises pas ce que j'écris.
Plus haut, il y a écrit :La plupart des SMTP n'aime pas les envois en masse et une temporisation est souvent nécessaire.
On a déjà vu à de nombreuses reprises du publipostage posant des problèmes d'envoi par courriel avec le SMTP GMail.

Commence par faire le test avec ton FAI.
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

J'avais bien lu ta réponse c'est pourquoi j'ai testé en n'essayant d'envoyer qu'un seul message.

Par contre ton autre commentaire avec le lien sur le publipostage est très intéressant.
Je vais relire les messages associés.

Je vais aussi essayer une boucle avec la macro envoi mais tout cela va me demander plusieurs jours.

A bientôt
openoffice 4.1.1 sous Windows 7
bgault
Membre lOOyal
Membre lOOyal
Messages : 25
Inscription : 23 juin 2008 07:05
Localisation : Segré

Re: [Calc] Envoi de courriel : objet non défini

Message par bgault »

Bon cette fois je termine après quelques péripéties sur la configuration de la messagerie.

Voilà donc le code de mon publipostage :

Code : Tout sélectionner

 Sub multipostage
 Dim Messagerie As Object, Client As Object, Courrier As Object
 Dim sujet,texte, nom, adresse, adresseDoc as string
 Dim total, numero as integer
 
'sujet = InputBox("Sujet", "") 'La variable reçoit la valeur entrée dans l'InputBox
'texte = InputBox("Corps du message", "") 'La variable reçoit la valeur entrée dans l'InputBox

 

classeur = ThisComponent  ' le classeur
feuilles = classeur.Sheets ' la collection des feuilles
feuille1 = feuilles.getByName("Liste")  'la feuille initiale

sujet=feuille1.getCellByPosition(2,0).String
texte=feuille1.getCellByPosition(3,0).String
total = feuille1.getCellByPosition(5,0).String

for numero = 1 to total
nom = feuille1.getCellByPosition(0,numero).String 
adresse = feuille1.getCellByPosition(1,numero).String 
adresseDoc = convertToURL("D:\pdf\" & nom & ".pdf")


Messagerie = CreateUnoService("com.sun.star.system.SystemMailProvider")'Version Windows/Linux Aoo4
  Client = Messagerie.queryMailClient()
  Courrier = Client.createMailMessage()   
  Courrier.Subject = sujet  
  Courrier.Recipient = adresse
  'Courrier.CcRecipient = Array("")'CopieA
  'Courrier.BccRecipient = Array("")'CopieA
  Courrier.Attachement = Array(adresseDoc)'PcsJt()
  Courrier.body = texte
  Client.sendMailMessage(Courrier,0)'Flag inopérant

 
 next numero
 End Sub
et le fichier joint
test-20150905.ods
J'explique tout :
Le fichier comporte les adresses des destinataires et leurs noms.
Il comporte aussi le sujet des messages et le corps de texte qui est le même pour tous les messages.
La commande de multipostage va donc créer les messages, un pour chaque destinataire,
en lui adjoignant un fichier joint pris dans le dossier d:\pdf\ et qui porte le nom du destinataire : nom.pdf.

Les messages étant envoyés via thunderbird, il ne reste plus qu'à aller dans thunderbird et de cliquer sur envoyer pour chacun des messages.
C'est un peu fastidieux mais c'est quand même plus rapide que de faire tout à la main en créeant les messages un par un.

Remarque : tout ceci fonctionne parfaitement avec la messagerie free.

Je marque donc résolu au départ
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
openoffice 4.1.1 sous Windows 7