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

Codes specifiques à MacOS X
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 112
Inscription : mer. 28/janv./2009 13:28

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

Message 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
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

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

Message 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 !
Avatar de l’utilisateur
Mindphazer
Messages : 635
Inscription : mer. 24/août/2005 10:42

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

Message 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....
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

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

Message 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:
Avatar de l’utilisateur
Mindphazer
Messages : 635
Inscription : mer. 24/août/2005 10:42

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

Message 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")
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
Mindphazer
Messages : 635
Inscription : mer. 24/août/2005 10:42

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

Message 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$)
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
Philippe_GEORGES
Messages : 112
Inscription : mer. 28/janv./2009 13:28

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

Message par Philippe_GEORGES »

Merci beaucoup, je vais tester tout ça !

Pour les pièces jointes, je crains que se soit impossible....
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
Avatar de l’utilisateur
Mindphazer
Messages : 635
Inscription : mer. 24/août/2005 10:42

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

Message 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...
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

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

Message par djes »

Avatar de l’utilisateur
Mindphazer
Messages : 635
Inscription : mer. 24/août/2005 10:42

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

Message 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
Bureau : Win10 64bits
Maison : Macbook Pro M1 14" SSD 512 Go / Ram 16 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Répondre