[Résolu] [Calc] Envoi de courriel totalement automatique

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 !
didu31
Fraîchement OOthentifié
Messages : 4
Inscription : 13 avr. 2009 18:57

[Résolu] [Calc] Envoi de courriel totalement automatique

Message par didu31 »

Bonsoir,

Sur Ubuntu, OO 3.0.1, j'ai créé une macro pour envoyer un mail automatiquement sans intervention de l'utilisateur requise.
Tout marche bien sauf que, sauf que, l'interface d'envoi du message s'affiche. Pourtant, NO_USER_INTERFACE a été stipulé.
A l'affichage de la fenêtre du message du client de messagerie, les champs From, To, Subject, ... sont bien remplis et il suffit d'un clic pour envoyer le message.

Code : Tout sélectionner

sub Bibi
      
   ' Use one of the following two lines, depending on which
   '  mailer you want to use.
   ' SimpleCommandMail will use your system's command line tools to send mail.
   ' SimpleSystemMail will use whatever (GUI) mail client you configured in
   '   Tools -> Options -> OpenOffice.org -> External Programs.
   ' For some reason the command line mail service does not appear to work on Windows?
   '
   oMailer = createUnoService( "com.sun.star.system.SimpleCommandMail" )
'   oMailer = createUnoService( "com.sun.star.system.SimpleSystemMail" )
   
   oMailClient = oMailer.querySimpleMailClient()
   
   oMessage = oMailClient.createSimpleMailMessage()
   
   oMessage.setRecipient("d.g@c.fr")
   oMessage.setSubject("Sauvegarde de mon document")
   Dim attachement(1 To 1) as string
   attachement(1) = ThisComponent.getURL
   oMessage.setAttachement(attachement)
   
   ' The zero is the DEFAULTS constant from
   '  com.sun.star.system.SimpleMailClientFlags.
   oMailClient.sendSimpleMailMessage( oMessage, com.sun.star.system.SimpleMailClientFlags.NO_USER_INTERFACE )
   ' One of the options in the SimpleMailClientFlags is an option
   '  to send the mail with no user interface.  Just send it. 

end sub
A noter que c'est Evolution qui est renseigné dans les Options Internet de OO. J'ai tenté aussi avec thunderbird sans plus de succès.

Question: que dois-je faire pour que l'envoi de message soit totalement automatique. Y a t'il une option à cocher dans le client de messagerie ou plus raisonnablement, y a-t'il une client de messagerie en ligne de commande, compatible avec OO ?

Merci beaucoup
Didier

Le modérateur a écrit : :alerte:
Le titre de votre question n'est pas assez explicite ou ne reflète pas le problème que vous décrivez :
<[Calc] com.sun.star.system.SimpleCommandMail>

Nous l'avons donc modifié. En effet, lors d'une recherche, ce sujet risquait de passer inaperçu et donc de ne pas aider d'autres personnes ayant le même problème que vous. Des termes comme "problème" ou "openoffice" sont bien sûr implicites et n'ont pas besoin d'être mentionnés.

Voici quelques astuces pour avoir un titre optimum : http://user.services.openoffice.org/fr/ ... 1002#p1002

La prochaine fois, pensez à bien choisir les termes du titre de votre question. N'oubliez pas qu'un titre clair et précis augmente vos chances d'obtenir des réponses plus rapidement.

Merci de votre collaboration pour nous aider à rendre la qualité de ce forum optimum.
Dernière modification par didu31 le 23 avr. 2009 11:18, modifié 2 fois.
Open Office 3.0.1, Ubuntu 8.10, Windows Vista
Nicolas
Membre hOOnoraire
Membre hOOnoraire
Messages : 121
Inscription : 30 nov. 2006 13:28
Localisation : Chambéry (73)

Re: [Calc] com.sun.star.system.SimpleCommandMail

Message par Nicolas »

Hello
Ci joint Macro glanée de-ci de-là et qui fonctionne sous XP et Thunderbird.

Code : Tout sélectionner

  Option Explicit

     Sub SendMel
       Dim oMailer as Object, unClient as Object, monMel as Object
       Dim enCopie(0) as String, annexes(0) as String
       If GetGUIType=1 Then
            oMailer=CreateUnoService("com.sun.star.system.SimpleSystemMail")
         Else
            oMailer=CreateUnoService("com.sun.star.system.SimpleCommandMail")
         End If
       unClient = oMailer.querySimpleMailClient()
       If IsNull(unClient) then
          MsgBox("Client de messagerie non disponible", 16)
          stop
       End If   
       monMel = unClient.createSimpleMailMessage()
       enCopie(0) = "second_destinataire@test.com"
       annexes(0)= ThisComponent.getURL
       with monMel
       	'XRAY monMel
          .Recipient = "destinataire@test.com"
          .CcRecipient = enCopie()
          .Originator = "expediteur@test.com"
          .Subject = "Sauvegarde de mon Doc"
          .Attachement = annexes()
       end with
       unClient.sendSimpleMailMessage(monMel,1)'0 necessite l'intervention de l'utilisateur pour envoyer '1 Envoi auto
    End Sub
Reste à creuser la question de comment fermer Thunderbird ou autres clients de messagerie et de retourner sous OOO.
@+
Nicolas.
OoO 3.0.1 XP home SP3
didu31
Fraîchement OOthentifié
Messages : 4
Inscription : 13 avr. 2009 18:57

[Résolu] [Calc] Envoi de courriel totalement automatique

Message par didu31 »

Finalement, j'ai opté pour une macro en Python.
En effet, j'ai découvert une librairie Python pour envoyer des e-mails.
J'ai ici, un petit script de test :

Code : Tout sélectionner

import smtplib, socket

fromaddr = "l.g@c.fr"
toaddrs  = ["d.g@c.fr"]

msg = open("msg.eml", "r").read()

try:
    server = smtplib.SMTP('smtp.club-internet.fr')
    result = server.sendmail(fromaddr, toaddrs, msg)
    server.quit()
    if result:
        for r in result.keys():
            print "Error sending to", r
            rt = result[r]
            print "Code", rt[0], ":", rt[1]
except (smtplib.SMTPException, socket.error), arg:
    print "SMTP Server could not send mail", arg
Remarques :
Il est inutile d'avoir un client de messagerie installé. La bib smtplib y pourvoit.
A la fin de l'exécution du script, le message est envoyé.

Dans cet exemple, le fichier mail ( .eml) est déjà enregistré. Mais rien n'empêche d'en construire un, par programme : la bib python email.MIMEMultipart vous permet de créer le mail avec des fichiers attachés.

Je voulais aussi envoyer le document en cours en pièce jointe sans devoir le sauvegarder. Je pense que l'intertace XTransferable me permet de copier son contenu où bon me semble. Donc à priori, pourvu que l'interface UNO pour Python existe, ça devrait le faire.
Open Office 3.0.1, Ubuntu 8.10, Windows Vista