Page 1 sur 1

Lancer la messagerie mail avec sujet texte et pièce jointe

Publié : mer. 09/janv./2019 18:22
par Philippe_GEORGES
Bonjour

Je voudrais lancer depuis une application PureBasic le logiciel Mail avec un sujet, un corps de texte, et une pièce jointe. (vers un seul correspondant).

Comment dois je lancer la commande runprogram() et avec quels paramètres ?

Merci d'avance,

Phil

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : mer. 09/janv./2019 19:02
par boby
Bonjour Philippe,
Je ne crois pas qu'il y ai grand utilisateurs de PB sous OS-X sur le forum français, je t'invite fortement à aller poser ta question sur le forum US, tu auras plus de chance d'obtenire ce que tu cherches.

Bonne recherche à toi !

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : mer. 09/janv./2019 19:05
par Mindphazer
Bonjour,
il est possible de lancer l'application Mail avec la commande RunProgram suivante :

Code : Tout sélectionner

RunProgram("open", "-a Mail.app","")
Par contre, manifestement, l'application n'accepte pas de paramètres
Je ne vois donc pas trop comment générer un nouveau mail avec un destinataire et une pièce jointe....

Essaie éventuellement de poser la question sur le forum anglais, peut-être y a t'il une solution avec les API....

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : mer. 09/janv./2019 20:31
par Marc56
Un mailto ne fonctionne pas sous mac os ?
Sur pc, un simple RunProgram("mailto:nom@fournisseur?subject=xxxx&body=yyyy") et autres paramètres suffit. (sauf pour mettre une pièce jointe)
(Je n'ai pas de mac)
:wink:

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : jeu. 10/janv./2019 18:50
par Mindphazer
Voici une solution en utilisant Applescript
Pour le moment, ça n'ouvre qu'un nouveau mail sans renseigner ni destinataire, ni sujet.. J'y travaille
Merci à Wilbert du forum anglais pour la procédure AppleScript :wink:

Code : Tout sélectionner

Procedure.s AppleScript(Script.s)
  Protected retVal.s, strVal, numItems, i
  Protected aScript = CocoaMessage(0, CocoaMessage(0, CocoaMessage(0, 0, "NSAppleScript alloc"), "initWithSource:$", @Script), "autorelease")
  Protected eventDesc = CocoaMessage(0, aScript, "executeAndReturnError:", #nil)
  If eventDesc
    numItems = CocoaMessage(0, eventDesc, "numberOfItems")
    If numItems
      For i = 1 To numItems
        strVal = CocoaMessage(0, CocoaMessage(0, eventDesc, "descriptorAtIndex:", i), "stringValue")
        If strVal
          retVal + PeekS(CocoaMessage(0, strVal, "UTF8String"), -1, #PB_UTF8)
          If i <> numItems : retVal + #LF$ : EndIf
        EndIf
      Next
    Else
      strVal = CocoaMessage(0, eventDesc, "stringValue")
      If strVal : retVal = PeekS(CocoaMessage(0, strVal, "UTF8String"), -1, #PB_UTF8) : EndIf
    EndIf
  EndIf
  ProcedureReturn retVal 
EndProcedure


AppleScript("tell application " + Chr(34) + "Mail" + Chr(34) + #CRLF$+" set t To make new outgoing message "+#CRLF$ +"set visible of t To true"+#CRLF$+"activate"+#CRLF$+"End Tell")

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : jeu. 10/janv./2019 21:48
par Mindphazer
Et voilà la version avec le mail du destinataire, son nom, le sujet et le contenu du mail. Pour les pièces jointes, je sèche pour le moment...

Code : Tout sélectionner

Procedure.s AppleScript(Script.s)
  Protected retVal.s, strVal, numItems, i
  Protected aScript = CocoaMessage(0, CocoaMessage(0, CocoaMessage(0, 0, "NSAppleScript alloc"), "initWithSource:$", @Script), "autorelease")
  Protected eventDesc = CocoaMessage(0, aScript, "executeAndReturnError:", #nil)
  If eventDesc
    numItems = CocoaMessage(0, eventDesc, "numberOfItems")
    If numItems
      For i = 1 To numItems
        strVal = CocoaMessage(0, CocoaMessage(0, eventDesc, "descriptorAtIndex:", i), "stringValue")
        If strVal
          retVal + PeekS(CocoaMessage(0, strVal, "UTF8String"), -1, #PB_UTF8)
          If i <> numItems : retVal + #LF$ : EndIf
        EndIf
      Next
    Else
      strVal = CocoaMessage(0, eventDesc, "stringValue")
      If strVal : retVal = PeekS(CocoaMessage(0, strVal, "UTF8String"), -1, #PB_UTF8) : EndIf
    EndIf
  EndIf
  ProcedureReturn retVal 
EndProcedure

sujet$ = "Sujet"
nom$ = "Toto"
dest$ = "Destinataire@toto.com"
Contenu$ = "Bla Bla bla"

script$ = "Tell Application " + Chr(34) + "Mail" + Chr(34) + #CRLF$
script$ = script$ + "set newMessage to make new outgoing message with properties {subject:"+Chr(34)+sujet$+Chr(34)+", content:"+Chr(34)+Contenu$+Chr(34)+" & Return & Return}"+#CRLF$
script$ = script$ + "tell newMessage" + #CRLF$
script$ = script$ + "set visible to true" + #CRLF$
script$ = script$ + "make new to recipient at end of to recipients with properties {name:"+Chr(34)+nom$+Chr(34)+", address:"+Chr(34)+dest$+Chr(34)+"}" + #CRLF$
script$ = script$ + "end tell" + #CRLF$
script$ = script$ + "activate" + #CRLF$
script$ = script$ + "End Tell" + #CRLF$

AppleScript(script$)

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : sam. 12/janv./2019 14:58
par Philippe_GEORGES
Merci beaucoup, je vais tester tout ça !

Pour les pièces jointes, je crains que se soit impossible....

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : sam. 12/janv./2019 18:04
par Mindphazer
En Applescript, ça fonctionne (les pièces jointes)
Mais le script Applescript, lancé par la procédure AppleScript() (vous me suivez ? :mrgreen: ) n'insère pas la pièce jointe. Je ne comprends pas pourquoi...

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : sam. 12/janv./2019 19:11
par djes

Re: Lancer la messagerie mail avec sujet texte et pièce join

Publié : sam. 12/janv./2019 20:06
par Mindphazer
Oui mais ce que veut Philippe, c'est lancer l'application Mail sur son Mac en créant un nouveau message et en renseignant le destinataire, le sujet et insérer une pièce jointe...
Sinon, l'envoi de mail via les commandes natives de PB fonctionne très bien