OVH Cloud OVH Cloud

shell pour envoi mail

15 réponses
Avatar
Maurice
Je voudrais lancer l'application qui ouvre la fenêtre de composition d'un
message en Outlook Express (comme un mailto:truc@machin.fr en html)
J'utilise VB 4.0

J'arrive à ouvrir outlook Express sans pb mais pas l'éditeur de message en
faisant :

Private Sub Command1_Click()
ValRetour = Shell("C:\Program Files\Outlook Express\msimn.exe", 1)
End Sub


Merci de vos contributions éventuelles

10 réponses

1 2
Avatar
Fred
Dans : news:4303396c$0$22285$,
Maurice disait :
Je voudrais lancer l'application qui ouvre la fenêtre de composition
d'un message en Outlook Express (comme un mailto: en
html) J'utilise VB 4.0




Bonjour,

Shell """C:Program FilesOutlook Expressmsimn.exe""
/mailurl:mailto:"

On doit même pouvoir mettre un objet et autres bricoles (voir syntaxe du
lien mailto)
Ceci fonctionne mais il est sans doute préférable de lancer le logiciel
de messagerie par défaut.
Je n'ai pas essayé, je verrais bien un passage par le registre pour
récupérer la commande.
Pas mieux pour l'instant.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
Fred
Dans : news:4303396c$0$22285$,
Maurice disait :
Je voudrais lancer l'application qui ouvre la fenêtre de composition
d'un message en Outlook Express (comme un mailto: en
html) J'utilise VB 4.0



Beaucoup mieux, compatible avec de nombreuses plateformes et indépendant
du choix de l'utilisateur quand à son logiciel de courrier :
Shell "RunDLL32.EXE url.dll,MailToProtocolHandler mailto:"

Attention au respect de la casse sur MailToProtocolHandler

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
LE TROLL
Salut, tiens, voila du boudon, lol, non, voilà de
quoi compléter:

MAIL
Sub Command2_Click() 'adresse e-mail :
Dim Mail As String
'
Mail = ?subject=titre_du_courrier

Mail = adresse?sujet=titre&body=texte
ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "",
App.Path, 1
ShellExecute Me.hwnd, "Open", "Mailto:" &
"adr?sujet=s&body=b", "", App.Path, 1
End Sub
------------------------


"Maurice" a écrit dans le message de
news: 4303396c$0$22285$
Je voudrais lancer l'application qui ouvre la fenêtre de
composition d'un
message en Outlook Express (comme un mailto:
en html)
J'utilise VB 4.0

J'arrive à ouvrir outlook Express sans pb mais pas
l'éditeur de message en
faisant :

Private Sub Command1_Click()
ValRetour = Shell("C:Program FilesOutlook
Expressmsimn.exe", 1)
End Sub


Merci de vos contributions éventuelles




Avatar
Patrice Henrio
A lire en plein écran pour comprendre les retours à la ligne dus à OE (ou
autre)

Affligeant !
Quand on sait pas on dit pas.

Sub Command2_Click() 'adresse e-mail :
Dim Mail As String
'


Jusque là pas de fautes
Mail = ?subject=titre_du_courrier


J'ose supposer que cette ligne est due à un retour intempestif de mon OE et
qu'elle figure juste après l'apostrophe indiquant un commentaire, sinon elle
ne sert de toutes façons à rien puisqu'on donne une autre valeur à la
variable Mail à la ligne suivante (programmation séquentielle)

Mail = adresse?sujet=titre&body=texte



Cette ligne ne veut rien dire, les constantes de chaines sont encadrée par
des guillemets et le nom d'une variable ne peut contenir ni "?", ni "=", ni
"&" (de mémoire)

ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "", App.Path, 1



Retour à la ligne intempestif du à OE, il faut sûrement lire
ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "", App.Path, 1



Cependant comme le dit la MSDN et l'exemple de l'API ShellExecute de la
KPDTeam
vbNullString Chaîne ayant la valeur 0. Différent d'une chaîne de
longueur nulle (""); utilisé pour l'appel de procédures externes.


Donc il faut remplacer le 4ème paramètre par vbNullString


ShellExecute Me.hwnd, "Open", "Mailto:" & "adr?sujet=s&body=b", "",
App.Path, 1



Même remarque que ci-dessus

End Sub


Cette dernière ligne est bonne

Patrice HENRIO
(Ce n'est pas un pseudo)

"Imagine le pire, tu n'es jamais déçu, il t'arrive même d'être agréablement
surpris."
Avatar
LE TROLL
Salut, tiens, là ça marche, testé:

Private Declare Function ShellExecute Lib "shell32.dll"
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation
As String, ByVal lpFile As String, ByVal lpParameters As
String, ByVal lpDirectory As String, ByVal nShowCmd As Long)
As Long
'
Sub Command1_Click()
Dim Mail As String
Mail = "?subject=titre_du_courrier&body=texte
du corps"
ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "",
App.Path, 1
End Sub
---------------------------


"Maurice" a écrit dans le message de
news: 4303396c$0$22285$
Je voudrais lancer l'application qui ouvre la fenêtre de
composition d'un
message en Outlook Express (comme un mailto:
en html)
J'utilise VB 4.0

J'arrive à ouvrir outlook Express sans pb mais pas
l'éditeur de message en
faisant :

Private Sub Command1_Click()
ValRetour = Shell("C:Program FilesOutlook
Expressmsimn.exe", 1)
End Sub


Merci de vos contributions éventuelles




Avatar
LE TROLL
Toujours aussi con!

Je ne connais pas le niveau de la personne, si elle n'y
arrive pas elle redemande!

Ça ce sont des exemples, un sans corps avec adresse en dur,
et l'autre avec corps et adresse en variable!
Mail = ?subject=titre_du_courrier
Mail = adresse?sujet=titre&body=texte

Et ensuite l'appel avec variable et l'appel en dur
ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "",
App.Path, 1
ShellExecute Me.hwnd, "Open", "Mailto:" &
"adr?sujet=s&body=b", "", App.Path, 1

Ça devrait être simple pour toi, si tu ne comprends rien
c'est pas de ma faute, quand aux lignes coupées, évidemment
une ligne n'est pas infinie!

Tu ne me parle pas comme ça la fiente, si tu a quelque
chose à modifier dans une réponse, ben tu te contentes de
rajouter une réponse à la question, pigé!
--------------------------------


"Patrice Henrio" a écrit dans
le message de news:
uX30s%
A lire en plein écran pour comprendre les retours à la
ligne dus à OE (ou autre)

Affligeant !
Quand on sait pas on dit pas.

Sub Command2_Click() 'adresse e-mail :
Dim Mail As String
'


Jusque là pas de fautes
Mail = ?subject=titre_du_courrier


J'ose supposer que cette ligne est due à un retour
intempestif de mon OE et qu'elle figure juste après
l'apostrophe indiquant un commentaire, sinon elle ne sert
de toutes façons à rien puisqu'on donne une autre valeur à
la variable Mail à la ligne suivante (programmation
séquentielle)

Mail = adresse?sujet=titre&body=texte



Cette ligne ne veut rien dire, les constantes de chaines
sont encadrée par des guillemets et le nom d'une variable
ne peut contenir ni "?", ni "=", ni "&" (de mémoire)

ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "",
App.Path, 1



Retour à la ligne intempestif du à OE, il faut sûrement
lire
ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "",
App.Path, 1



Cependant comme le dit la MSDN et l'exemple de l'API
ShellExecute de la KPDTeam
vbNullString Chaîne ayant la valeur 0. Différent
d'une chaîne de longueur nulle (""); utilisé pour l'appel
de procédures externes.


Donc il faut remplacer le 4ème paramètre par vbNullString


ShellExecute Me.hwnd, "Open", "Mailto:" &
"adr?sujet=s&body=b", "", App.Path, 1



Même remarque que ci-dessus

End Sub


Cette dernière ligne est bonne

Patrice HENRIO
(Ce n'est pas un pseudo)

"Imagine le pire, tu n'es jamais déçu, il t'arrive même
d'être agréablement surpris."



Avatar
Patrice Henrio
Tant mieux et c'est plus propre que le premier envoie.
Pour ma part je ne t'ai pas insulté.
Au revoir.

"LE TROLL" <le a écrit dans le message de news:

Salut, tiens, là ça marche, testé:

Private Declare Function ShellExecute Lib "shell32.dll" Alias
"ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal
lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As
String, ByVal nShowCmd As Long) As Long
'
Sub Command1_Click()
Dim Mail As String
Mail = "?subject=titre_du_courrier&body=texte du corps"
ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "", App.Path, 1
End Sub
---------------------------


"Maurice" a écrit dans le message de news:
4303396c$0$22285$
Je voudrais lancer l'application qui ouvre la fenêtre de composition d'un
message en Outlook Express (comme un mailto: en html)
J'utilise VB 4.0

J'arrive à ouvrir outlook Express sans pb mais pas l'éditeur de message
en
faisant :

Private Sub Command1_Click()
ValRetour = Shell("C:Program FilesOutlook Expressmsimn.exe", 1)
End Sub


Merci de vos contributions éventuelles








Avatar
Renfield
Mauvaise habitude que d'utiliser "" en lieu et place de VbNullstring,
le résultat est différent, avec les API...

c'est pas de ma faute, quand aux lignes coupées, évidemment
une ligne n'est pas infinie!



Certes non, pas infinie, mais on est pas en train d'ecrire des SMS sur
un ecran 24 x 8 ...
il n'y a donc aucune raison pour que les lignes de code soient si
violement sectionnées.

de même, une autre bonne habitude à prendre, avec l'utilisation
d'API, c'est de ce servir des constantes.
on preferera ainsi :

ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, VbNullString, App.Path,
SW_SHOWNORMAL
à :
ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "", App.Path, 1


pour répondre à Maurice, je dirai qu'il n'est pas bon de considérer
que l'utilisateur se sert de Outllok Express, ou de tout autre logiciel
de messagerie, et d'utiliser, pour cela un chemin en dur.
Il vaut mieux, tu l'aura compris, utiliser le protocole Mailto (decrit
entre autres sur www.w3.org)

ShellExecute
ou
Shell "RunDLL32.EXE url.dll,MailToProtocolHandler
mailto:"

je pense que les deux solutions se valent. La solution suggérée par
Fred à cet avantage de ne pas mettre en jeu les API. Je n'ai rien
contre les API, bien au contraire, mais on peut ici s'en passer.
Avatar
Fred
Dans le message:,
Renfield écrit:


ShellExecute
ou
Shell "RunDLL32.EXE url.dll,MailToProtocolHandler
mailto:"

je pense que les deux solutions se valent. La solution suggérée par
Fred à cet avantage de ne pas mettre en jeu les API. Je n'ai rien
contre les API, bien au contraire, mais on peut ici s'en passer.



À propos d'APIs, j'ai cherché si on pouvait faire appel directement à la
fonction appelée par RunDLL32 sans succès.
Est-ce possible à ton avis ?

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
LE TROLL
Oui, j'ai coupé un peu court, j'ai rectifié, mais ça ne donnait pas le droit au
zoizeau MVP de me faire des remontrances sur ce ton...
Me concernant, je fais toujours en fonction du standard Microsoft, surtout parce
qu'on est dans un forum du même nom, c'est au mec de dire si ça coince à cause
de ses logiciels non Microsoft...
Sinon, pas de problème, voilà une intervention et une précision faite sans
remontrance, mais en précisant, bravo :o)
-----------------


"Renfield" a écrit dans le message de news:

Mauvaise habitude que d'utiliser "" en lieu et place de VbNullstring,
le résultat est différent, avec les API...

c'est pas de ma faute, quand aux lignes coupées, évidemment
une ligne n'est pas infinie!



Certes non, pas infinie, mais on est pas en train d'ecrire des SMS sur
un ecran 24 x 8 ...
il n'y a donc aucune raison pour que les lignes de code soient si
violement sectionnées.

de même, une autre bonne habitude à prendre, avec l'utilisation
d'API, c'est de ce servir des constantes.
on preferera ainsi :

ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, VbNullString, App.Path,
SW_SHOWNORMAL
à :
ShellExecute Me.hwnd, "Open", "Mailto:" & Mail, "", App.Path, 1


pour répondre à Maurice, je dirai qu'il n'est pas bon de considérer
que l'utilisateur se sert de Outllok Express, ou de tout autre logiciel
de messagerie, et d'utiliser, pour cela un chemin en dur.
Il vaut mieux, tu l'aura compris, utiliser le protocole Mailto (decrit
entre autres sur www.w3.org)

ShellExecute
ou
Shell "RunDLL32.EXE url.dll,MailToProtocolHandler
mailto:"

je pense que les deux solutions se valent. La solution suggérée par
Fred à cet avantage de ne pas mettre en jeu les API. Je n'ai rien
contre les API, bien au contraire, mais on peut ici s'en passer.
1 2