Envoyer un mail avec VB6

Signaler
Messages postés
40
Date d'inscription
vendredi 4 avril 2008
Statut
Membre
Dernière intervention
12 septembre 2012
-
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
-
Bonjour

Voila je voudrais via VB6 envoyer un mail à plusieurs personnes dont la liste sera dans un tableau dynamique.
J'ai trouvé comme code :
Declare Function ShellExecute Lib "shell32.dll" _
    Alias "ShellExecuteA" (ByVal hwnd As Long, _
                           ByVal lpOperation As String, ByVal lpFile As String) As Long
Public Sub EnvoiMail(Optional Adresse As String, _
                      Optional Sujet As String, _
                      Optional Contenu As String)


    Dim Temp As String
    'Contenu = Replace(Contenu, Chr(13), vbCrLf)
   
    'Créé la chaîne de commande avec les paramètres fournis
    Temp = "&Subject=" & "Essai"
    Temp = Temp & "&Body=" & "Bonjour"
   
    'Remplace le premier '&' (s'il existe) par un '?'    If Mid(Temp, 1, 1) "&" Then Mid(Temp, 1, 1) "?"
   
    'Ajoute la commande 'mailto:' et l'adresse
    Temp = "mailto:" & "[mailto:nom@fournisseur.fr nom@fournisseur.fr] "& Temp
   
    'Execute la commande par l'API
    Call ShellExecute(F_Principal.hwnd, "open", Temp)


End Sub

Mais quand j'essaie il me met comme message d'erreur :Objet Required en mettant   Call ShellExecute(F_Principal.hwnd, "open", Temp) en jaune

Est-il possible d'ouvrir la messagerie par défaut et en mettant les info sujet, coprs du texte ...

Merci de votre aide

6 réponses

Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Shell(





"cmd.exe /c start mailto:cobol@netcobol.com?Subject=Request for details of on-site training in NetCOBOL for .NET&Body=blabal"

)
c'est un truc du genre pour Body et Subject je suis pas sur

Au contraire des chasseurs qui ne sont pas des lapins, les pollueurs, eux, sont des ordures

/B>
Messages postés
40
Date d'inscription
vendredi 4 avril 2008
Statut
Membre
Dernière intervention
12 septembre 2012

Ca y est j'ai trouvé

Dim Monoutlook As Object, MonMessage As Object


Set Monoutlook = CreateObject("Outlook.Application")
Set MonMessage = Monoutlook.createitem(0)




MonMessage.To = "adressemail"
MonMessage.Subject = "Essai"
MonMessage.body = "Bonjour 2"
MonMessage.send
Set Monoutlook = Nothing

Et ca marche

Par contre, il me met un message  de sécurité alerte qui apparait et en allant dans outils, option, sécurité, je ne trouve rien pour le désactiver
Messages postés
40
Date d'inscription
vendredi 4 avril 2008
Statut
Membre
Dernière intervention
12 septembre 2012

re,

j'ai trouvé un logiciel :    Advanced Security for Outlook qui permet d'éviter l'apparition de ce message

cool
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,

tout le monde n'a pas outlook, çà serait une erreur de coder en supposant qu'il est installé

http://www.codyx.org/snippet_pre-remplir-champs-mail-client-defaut_623.aspx
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
40
Date d'inscription
vendredi 4 avril 2008
Statut
Membre
Dernière intervention
12 septembre 2012

j'ai déjà essayé ca et il me met toute la ligne call en jaune avec un message d'erreur Object required donc je me suis rabattu sur une autre solution et ceux qui utiliseront mon logiciel ont outlook
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
comment peux-tu avoir un "object required", il n'y en a pas....

as-tu essayé dans un nouveau projet?

une form, un bouton

Option Explicit

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 SendMailWithDefaultClient(ByVal sDeliveredTo As String, ByVal sSubject As String, sBody As String)
'   remplace les VBCRLF par son codage, valide uniquement pour
le  format TXT
    sBody = Replace(sBody, vbCrLf, "%0D%0A")
'   envoie
    Call ShellExecute(0&, "Open", "mailto:" & sDeliveredTo & "?&Subject=" & sSubject & "&body=" & sBody, vbNullString, vbNullString, vbNormalFocus)
End Sub

Private Sub Command1_Click()
    SendMailWithDefaultClient "toto@wanadoo.fr", "test de pré-remplissage", "mon texte dans le mail"
End Sub

l'exemple était avec Text1.Text, évidemment si tu copies/colles sans lire et que tu n'as pas de Text1, forcément çà déconne....