Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Envoi de mails par VB6 à une liste de destinataires

7 réponses
Avatar
pierre.rivet
Bonjour,

Je cherche à faire un mailing par Internet à l'aide de VB6, par exemple
relancer les clients qui ne sont pas venus depuis le 1/2/2006

J'ai déjà vu la réponse de la FAQ N°2 et j'ai téléchargé un post intéressant
sur le site VBFrance.com
mais je cherche (désespérément pour l'instant) à étendre cette procédure.

Quelqu'un a-t-il une idée ?

Merci d'avance,

Pierre

7 réponses

Avatar
pierre.rivet
J'ai oublié de dire que je souhaiterais envoyer ces mails avec Outlook
express, qui est l'application de messagerie la plus répandue.

"pierre.rivet" a écrit dans le message de news:
4491168b$0$879$
Bonjour,

Je cherche à faire un mailing par Internet à l'aide de VB6, par exemple
relancer les clients qui ne sont pas venus depuis le 1/2/2006

J'ai déjà vu la réponse de la FAQ N°2 et j'ai téléchargé un post
intéressant sur le site VBFrance.com
mais je cherche (désespérément pour l'instant) à étendre cette procédure.

Quelqu'un a-t-il une idée ?

Merci d'avance,

Pierre




Avatar
X
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

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



--
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"pierre.rivet" a écrit dans le message de news:
4491168b$0$879$
Bonjour,

Je cherche à faire un mailing par Internet à l'aide de VB6, par exemple
relancer les clients qui ne sont pas venus depuis le 1/2/2006

J'ai déjà vu la réponse de la FAQ N°2 et j'ai téléchargé un post
intéressant sur le site VBFrance.com
mais je cherche (désespérément pour l'instant) à étendre cette procédure.

Quelqu'un a-t-il une idée ?

Merci d'avance,

Pierre




Avatar
Fred
Dans : news:44911701$0$896$,
pierre.rivet disait :
J'ai oublié de dire que je souhaiterais envoyer ces mails avec Outlook
express, qui est l'application de messagerie la plus répandue.



Bonjour,
un mail est un mail. Qu'il soit envoyé avec OE ou autre.
Maintenant, si le problème est de conserver les mails envoyés dans OE,
ce n'est pas possible car OE n'est pas scriptable.
Au pire tu peux t'envoyer le fameux mail et tu en auras une copie dans
OE.

Si tu souhaites faire l'envoi de manière transparente, comme je le
suppose, je vois deux solutions :
La première est de gérer soit même avec Winsock le protocole SMTP : pas
simple.
La deuxième est d'utiliser le composant CDO mais il faut : soit être
sous 2000 et supérieurs, soit avec Outlook installé.

Il y a un excellent exemple ici :
http://faqoe.com/index.php?bas=/rep/cs.php3
C'est du vbs mais cela s'utilise tel quel en VB6, en ajoutant
éventuellement (je n'en suis pas sûr) une référence à l'objet Microsoft
CDO dans le projet.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
pierre.rivet
Merci à Fred,

Pardon de ne pas avoir remercié plus tôt, mais je viens seulement de lire ta
réponse.
J'ai appliqué l'exemple. Il marche de façon impeccable.
J'ai effectivement rajouté une référence à l'objet Microsoft CDO.
J'ai testé un envoi à plusieurs destinataires ; ça fonctionne également,
mais chaque destinataire reçoit un mail avec la liste des destinataires. Ce
que je voudrais c'est que chacun reçoive un mail en ayant l'impression qu'il
est adressé à lui seul.
Il faut maintenant travailler un peu en essayant d'intercaler la procédure
d'envoi dans une boucle de ce style
do until Patient.eof
ENVOI DE MAIL
Patient.movenext
loop

Jusque maintenant c'est là dessus que je bute.....

Merci encore




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

Dans : news:44911701$0$896$,
pierre.rivet disait :
J'ai oublié de dire que je souhaiterais envoyer ces mails avec Outlook
express, qui est l'application de messagerie la plus répandue.



Bonjour,
un mail est un mail. Qu'il soit envoyé avec OE ou autre.
Maintenant, si le problème est de conserver les mails envoyés dans OE, ce
n'est pas possible car OE n'est pas scriptable.
Au pire tu peux t'envoyer le fameux mail et tu en auras une copie dans OE.

Si tu souhaites faire l'envoi de manière transparente, comme je le
suppose, je vois deux solutions :
La première est de gérer soit même avec Winsock le protocole SMTP : pas
simple.
La deuxième est d'utiliser le composant CDO mais il faut : soit être sous
2000 et supérieurs, soit avec Outlook installé.

Il y a un excellent exemple ici :
http://faqoe.com/index.php?bas=/rep/cs.php3
C'est du vbs mais cela s'utilise tel quel en VB6, en ajoutant
éventuellement (je n'en suis pas sûr) une référence à l'objet Microsoft
CDO dans le projet.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
pierre.rivet
Merci à Joe de ta réponse,

J'ai testé les lignes de code.

ça fonctionne, mais je dois confirmer l'envoi du envoyer le mail à chaque
fois
En outre, je ne parviens pas à paramétrer un titre ou un texte....
Je vais continuer à travailler la méthode préconisée par Fred.

Merci encore,

Pierre


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

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

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



--
Site logiciels
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
Site perso
http://irolog.free.fr/joe/index.htm
Principe d'utilisation des news Groups
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
------------------------------------------------------------------------------------
"pierre.rivet" a écrit dans le message de news:
4491168b$0$879$
Bonjour,

Je cherche à faire un mailing par Internet à l'aide de VB6, par exemple
relancer les clients qui ne sont pas venus depuis le 1/2/2006

J'ai déjà vu la réponse de la FAQ N°2 et j'ai téléchargé un post
intéressant sur le site VBFrance.com
mais je cherche (désespérément pour l'instant) à étendre cette procédure.

Quelqu'un a-t-il une idée ?

Merci d'avance,

Pierre








Avatar
Fred
Dans : news:4492a8a1$0$896$,
pierre.rivet disait :
Merci à Fred,

Pardon de ne pas avoir remercié plus tôt, mais je viens seulement de
lire ta réponse.



Mon post n'est pas très ancien :-)

J'ai appliqué l'exemple. Il marche de façon impeccable.
J'ai effectivement rajouté une référence à l'objet Microsoft CDO.



Tu peux améliorer un peu le programme en typant tes variables.
Par exemple, là où il est écrit :

With CreateObject("CDO.Message")

Tu peux écrire :

Dim msg As New CDO.Message
With msg
etc ...

Il faut maintenant travailler un peu en essayant d'intercaler la
procédure d'envoi dans une boucle de ce style
do until Patient.eof
ENVOI DE MAIL
Patient.movenext
loop



Exactement.
Il te suffit de faire une procédure paramétrée avec l'adresse du patient
:

Sub EnvoiMail(dest As String)

'Le script de Paskal
'avec seulement la ligne suivante à changer :

.To = dest

'à la place de .To = Þ

End Sub

Dans ta boucle, tu appelles :

EnvoiMail adressePatient

Où adressePatient est récupérée dans ton recordset

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
pierre.rivet
Private Sub Command5_Click()

'Pour mettre un fichier joint au mail

CommonDialog1.Filter = "Images ou documents
(*.bmp;*.jpg;*.doc)|*.bmp;*.jpg;*.doc"

CommonDialog1.Flags = 4

CommonDialog1.ShowOpen

TextAttaché = CommonDialog1.FileName

End Sub



=====================================================


Private Sub Command6_Click()

'Envoi du mailing proprement dit

Command6.Caption = "Envoi en cours"



If txtServeurSMTP = "" Then

MsgBox "Serveur d'envoi ?", vbCritical, "SMTP"

Unload Me

OstéoAideOutlook.Show

Exit Sub

End If



If txtNomExpéditeur = "" Then

MontreMessage "Expéditeur ?", 1, vbRed

txtNomExpéditeur.SetFocus

Exit Sub

End If



If txtEmailOrigine = "" Then

MontreMessage "Adresse de l'Expéditeur ?", 1, vbRed

txtEmailOrigine.SetFocus

Exit Sub

End If



If txtObjet = "" Then

MsgBox "Objet du message ?", vbQuestion, "Envoi de mail"

txtObjet.SetFocus

Exit Sub

End If



If txtMessage = "" Then

MsgBox "C'est un message sans texte ?", vbQuestion, "Envoi de mail"

txtMessage.SetFocus

Exit Sub

End If



Set UT = New ADODB.Recordset

UT.Open "select * from UTIL Order by Nom", CT, adOpenDynamic,
adLockOptimistic

If UT.EOF Then

'rien

Else

UT.MoveFirst

Do Until UT.EOF

Recherche = "Oui"

TextPatient = UT!NomPatient

NomDestinataire = TextPatient

txtDestinataire = UT!Email

Command4_Click

UT.MoveNext

Loop



End If

UT.Close



Command6.Caption = "Envoi mailing"

MsgBox "Envoi du mailing terminé", vbInformation, "Merci de votre patience"



End Sub







Private Sub Command4_Click()

With CreateObject("CDO.Message")

.From = txtEmailOrigine

.To = txtDestinataire

.Subject = txtObjet

.TextBody = txtMessage

If TextAttaché <> "" Then .AddAttachment (TextAttaché)

.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing")
= 2

.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")
= "smtp.wanadoo.fr"

.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport")
= 25

.Configuration.Fields.Update

On Error Resume Next

.Send

If Err Then MsgBox "Le message n'a pas pu être expédié."

On Error GoTo 0

End With

End Sub



Voilà Fred, si ça peut rendre service à quelqu'un...

Merci encore,

Pierre