Ouvrir le client mail pour pré remplir celui-ci

Résolu
Tweet75 Messages postés 87 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 3 janvier 2012 - 21 nov. 2010 à 22:05
paramecie Messages postés 15 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 29 novembre 2010 - 26 nov. 2010 à 00:33
Bonjour a tous,

Je travaille actuellement sur un projet sur VB.net et j'aimerai faire à l'aide d'une fonction, une ouverture automatique du client mail (outlook, windows live messenger, etc...) pour le pré remplir avec mes infos. J'ai beau chercher, je n'ai pas trouver de solutions à mon problème...

Je ne veux pas que le mail s'envoie de lui même...

Quelqu'un aurait il une solution ?

Merci par avance

17 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
23 nov. 2010 à 21:37
Re,

Pourquoi tu ne peux pas tester ?

Ton code à l'air bon, sauf qu'un simple process.start aurait suffit:

    Function Envoi_Mail(ByVal Expediteur As String, ByVal Destinataire As String, ByVal Sujet As String, ByVal Message As String)
        Try
            Cursor = Cursors.WaitCursor
            Process.Start("mailto:" & Destinataire & "?subject=" & Sujet & "&body=" & Message)
            Return True
        Catch ex As Exception
            Return False
        Finally
            Cursor = Cursors.Default
        End Try
    End Function

    Private Sub btn_SendMail_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_SendMail.Click
        If Envoi_Mail("expediteur@domaine.ext", "destinataire@domaine.ext", "sujet", "corp du message") Then
            MessageBox.Show("Message envoyé")
        Else
            MessageBox.Show("Echec de l'envoi du message")
        End If
    End Sub


Voila, @+

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
1
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
24 nov. 2010 à 13:15
%0A sert pour le retour chariot

Envoi_Mail("expediteur@domaine.ext", "destinataire@domaine.ext", "sujet", "corp du message%0ANouvelle ligne")


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
1
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
22 nov. 2010 à 12:19
Salut,

Fais une recherche avec le mot clé "mailto"

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Tweet75 Messages postés 87 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 3 janvier 2012
23 nov. 2010 à 20:56
Bonjour Mayzz,

Peux tu me dire si le code suivant est bon stp ?

Function Envoi_Mail(ByVal Expediteur As String, ByVal Destinataire As String, ByVal Sujet As String, ByVal Message As String)

Dim Mail As New Process

Cursor = Cursors.WaitCursor

Me.PB_Statut.Image = Projet.My.Resources.Mail
Me.Timer_Statut.Start()


Try

Mail.StartInfo.FileName = "mailto:" & Destinataire & "?subject=" & Sujet & "&body=" & Message

Mail.StartInfo.Verb = "open"
Mail.StartInfo.CreateNoWindow = True
Mail.Start()

Catch ex As Exception
MsgBox(ex, MsgBoxStyle.Exclamation, "Problème réseau (FR304)")
Cursor = Cursors.Default
Exit Function
End Try

Cursor = Cursors.Default


End Function
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tweet75 Messages postés 87 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 3 janvier 2012
23 nov. 2010 à 22:53
Si j'ai testé mais comme tu l'as bien dit j'avais peur d'en avoir trop mis. Une dernière petite question : Comment fais t'on pour aller à la ligne dans le corps du message ??

Merci !
0
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
24 nov. 2010 à 01:08
eh ben:
"papa et" & Environment.NewLine & "maman"


Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
0
paramecie Messages postés 15 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 29 novembre 2010
24 nov. 2010 à 02:21
Salut -

Puisqu'on en parle...

J'utilise ici (VB6SP5, XPSP3 ou W7x64) le vieil appel à ShellExecute pour faire un "mailto:"
Limité en nombre de caractères (1500 env.), mais bon, ça allait.

Sauf qu'avec Thunderbird ça marchait très bien jusqu'à la version 3.1, et que depuis le dernier paragraphe a TOUJOURS des retours chariots (%OD) qui manquent, et donc ce paragraphe est illisible / peu lisible. Suis pas allé très loin dans l'analyse du problème, mais c'est systématique, et uniquement depuis TB 3.1

Quelqu'un a-t-il eu ça aussi?

Quelqu'un a une autre solution pour 'parler à Thunderbird' (y créer un message a expédier)?

Sinon je vais réécrire ça pour directement modifier le fichier de Thuderbird 'courriers en attente' - comme ça je pourrai aussi faire partir les e-mails par lots. Et si vous vous demandez, oui je peux directement les envoyer par SMTP ou autre, mais il m'en faut une copie dans les e-mails... Pas de souci technique, ce n'est pas compliqué, mais à faire
0
paramecie Messages postés 15 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 29 novembre 2010
24 nov. 2010 à 17:36
Effectivement, c'est %0A et non %0D...
Le plus étonnant c'est que Thunderbird interprétait bien le %0D jusqu'à quelques mois...
Merci Mayzz

Bon, en tous cas notre fournisseurs e-mails râle (trop de connexions), il va donc bien falloir que je regroupe les envois d'e-mails...

Et à nouveau, si quelqu'un connaît une solution même payante pour accéder à TB et pouvoir lui passer des emails de plus de 2Ko, je veux bien
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
24 nov. 2010 à 17:58
Pourquoi passer par thunderbird ?

En vb6 tu peux simplement utiliser ce bon vieux winsock, il me semble que le protocole SMTP est relativement simple (sauf dans le cas d'une connexion sécurisé). Je n'ai pas d'exemple sous la main et mon VB6 est loin mais tu peux déjà regarder la RFC 2821 pour avoir plus d'infos et aussi chercher "client SMTP" dans les sources vb6 ici.

En .Net, la classe SMTPClient (System.Net.Mail), permet l'envoi d'email via la classe MailMessage, je ne peux te dire comment c'est fait en interne (bien que cela soit simple à vérifier via reflector), mais il me semble que le client SMTP ne se déconnecte pas de suite, permettant l'envoi de multiples messages à condition que les classes soient instanciées dans le même thread (mais cela reste à vérifier). Pour la sytaxe elle est très simple, en 30 seconde ton client est pondu sous VB Express 2008/2010.

++

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
paramecie Messages postés 15 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 29 novembre 2010
24 nov. 2010 à 20:04
Merci Mayzz pour les infos. Mais j'ai besoin d'une trace (pratique et même légale) dans nos e-mails, donc pas d'envoi par SMTP - sauf à refaire toute la messagerie...
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
24 nov. 2010 à 20:16
Mais j'ai besoin d'une trace (pratique et même légale) dans nos e-mails, donc pas d'envoi par SMTP - sauf à refaire toute la messagerie...


Je ne comprend pas, via quel méthode TB envoi les emails chez toi ?

Pour la trace légale, si ton soft enregistre les emails envoyés c'est une trace légale...



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
paramecie Messages postés 15 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 29 novembre 2010
24 nov. 2010 à 21:44
>Je ne comprend pas, via quel méthode TB envoi les emails chez toi ?

Pour l'instant par "mailto:"
Je vais désormais directement modifier le fichier "messages en attente" (j'ai vérifier faisabilité, pas de problème) - juste à faire...

>Pour la trace légale, si ton soft enregistre les emails envoyés c'est une trace légale...
Moins - et de toute façon j'ai besoin de suivre la conversation, de répondre ou de transférer, de me référer à... Pas possible de commencer sur un support et de continuer sur l'autre. Donc tout sous TB, ou tout ailleurs, mais pas les deux.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
24 nov. 2010 à 22:32
Pour l'instant par "mailto:"


Oui mais TB utilise bien le protocole SMTP ?

Fin bon, si tu dois suivre les conversation, rien empeche la réception sur un client mail classique, les gens von te répondre à l'adresse du mail, donc que t'envoi de TB ou d'ailleur ne change rien au problème, ton souci premier est d'automatiser l'envoi du 1er email.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
paramecie Messages postés 15 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 29 novembre 2010
25 nov. 2010 à 00:50
Oui TB utilise SMTP (entre autres).
En fait j'ai besoin de mes envois (tous) ou réponses dans TB (voire Google Desktop Search, qui ne marche plus avec TB 3.1, un autre problème...)
En gros, si je tape "123456" (numéro de commande), je dois trouver *tout* se rapportant à cela dans un seul endroit. Enfin, idéalement. Donc l'e-mail de départ (les différents e-mails expédiés, pas qu'un seul), je dois les avoir sous Thunderbird.

Bon, te biles pas, encore merci pour le %0A, c'était ça, et une erreur idiote - et pourtant ça a marché pendant 2 ans comme ça...
Je vais aller directement écrire dans le fichier de Thunderbird, pas de souci, juste je demandais s'il y avait une (nouvelle) solution "toute cousue"
0
Tweet75 Messages postés 87 Date d'inscription jeudi 5 novembre 2009 Statut Membre Dernière intervention 3 janvier 2012
25 nov. 2010 à 10:01
Bonjour a tous,

Tout d'abord, merci pour vos réponses. J'ai une toute dernière question :
tout marche parfaitement seulement je voudrai savoir s'il y a possibilité de mettre le curseur clignotant à la fin de la ligne pré écrite afin d'éviter de cliquer pour pouvoir écrire.

Merci
0
paramecie Messages postés 15 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 29 novembre 2010
25 nov. 2010 à 15:14
Je ne crois pas. Il ne resterait que SendKeys, ou ce type d'envoi de touches:
http://www.mvps.org/access/api/api0046.htm

Bien lire le deuxième paragraphe sur le danger d'utiliser l'envoi de touches - on peut par exemple s'assurer que la fenêtre sur laquelle on envoit la touche est bien celle de sa messagerie...
0
paramecie Messages postés 15 Date d'inscription samedi 23 octobre 2010 Statut Membre Dernière intervention 29 novembre 2010
26 nov. 2010 à 00:33
Excuses-moi, j'ai mal lu ta question.
Je pensais que tu souhaitais expédier sans avoir besoin de faire CTRL+Entrée ou d'appuyer sur le bouton correspondant (auquel cas il faudrait que tu utilises SendKeys voire que tu expédies en SMTP).
Pour changer de champ, à supposer que le curseur soit quelque part quand tu crées le message, tu peux aussi utiliser SendKeys pour envoyer des tabs ou des 'flèches'. Et/ou repérer le nom de la fenêtre (Window) idoine, et lui passer le focus, certainement pas mal d'APIs à gérer. J'ai pas mieux à te dire, sous la main et dans le temps que j'ai.
0
Rejoignez-nous