ENVOYER UN MAIL (GÈRE LES FICHIERS JOINTS ET LE HTML) EN VB.NET (2002,2003,2005)
cs_Fornikator
Messages postés43Date d'inscriptionjeudi 6 juin 2002StatutMembreDernière intervention 8 juin 2004
-
19 janv. 2003 à 01:12
Sly727
Messages postés9Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention 8 mai 2011
-
24 mars 2009 à 16:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Sly727
Messages postés9Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention 8 mai 2011 24 mars 2009 à 16:34
J'ai trouvé tout seul. Il suffit de rajouter: .Bcc.Add(Mcc) après .Body = Mbody
Sly727
Messages postés9Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention 8 mai 2011 24 mars 2009 à 15:17
Bonjour,
j'ai testé cette source et elle fonctionne plutôt bien. Cependant il y a une chose qui ne fonctionne pas, c'est l'envoi de l'email en copie caché (Bcc), on peut ajouter une adresse email à qui on veut envoyer une copie caché mais dans la fonction, ce n'est pas traité. Donc finalement on rentre une adresse inutilement.
Est-ce que qqun peut me donner un coup de main pour faire fonctionner ça svp ?
timotep
Messages postés34Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention16 janvier 2008 12 nov. 2007 à 21:05
Bonjour,
Bon code, il m'a bien servi.
Cependant, j'ai une question. J'ai le problème suivant. Pendant l'envoi de l'email, la pièce jointe est en lecture seule. Mon problème, c'est que dans mon appli, même après que le message soit envoyé, le fichier joint reste en lecture seule (base de données). Y a t il des ressources à libérer? car je suppose que l'objet créé pour attacher le fichier n'est pas détruit et donc que la pièce reste en lecture seule, jusqu'à ce que l'appli se femre complètement.
thepoe
Messages postés30Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention 1 juin 2011 21 nov. 2006 à 19:29
En effet, une fonction pour une classe, lol j'aurais pu faire mieux... Plus clair, j'ai dit ca parceque j'avais juste regardé le souce affiché plus haut qui n'est pas complet.
Désolé pour mon imprécision, et merci à tous pour la diffusion du code source, une des rares choses encore paragées sur la planete... Salutations
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 21 nov. 2006 à 18:48
mouais, plus clair... plus simpe peut etre, vu que tu as fais une classe contenant UNE fonction, mais explique moi en quoi ta source est plus clair.
La grosse difference, c'est que tu utilise pas la toute premiere version du framework (ce qui etait le cas ici) et donc que tu peux specifier le serveur smtp sans bidouilles. ^^
et si j'etais pas une grosse faignasse, je mettrais ma source à jour mais bon... :)
thepoe
Messages postés30Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention 1 juin 2011 21 nov. 2006 à 01:32
hackoustik
Messages postés81Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention 8 février 2007 30 avril 2006 à 09:06
Bjr, jai fais un pti prog pour envoyer mes mails, sa marche, mais la je lis et envois les lignes d'une page HTML et je pensai que mon compte Hotmail me les afficherai en tant que page HTML, alors quil m'affiche les lignes HTML, kelk1 sait si cest parceque jai oublier une option ?, yaurai pas une histoire avec Content-Type ?
ahmani24
Messages postés39Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention14 novembre 2006 24 avril 2006 à 17:37
Super,je l'ai essayé est ça marche tres bien.
monstros2003
Messages postés17Date d'inscriptiondimanche 12 janvier 2003StatutMembreDernière intervention 9 janvier 2009 21 déc. 2004 à 13:23
cs_fraboulet
Messages postés37Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention27 avril 2006 1 déc. 2003 à 20:01
Super, je ne sais pas encore si le code fonctionne!mais je compte l'essayer très vite!
RQ : N'HESITE PAS A PLACER TON SOURCE SI IL FONCTIONNE CAR IL EST DIFFICILE DE TROUVER UN CLIENT SMTP COMPLET!! (MAIL + FICHIER JOINT)
Merci encore!
jockos
Messages postés321Date d'inscriptiondimanche 22 octobre 2000StatutMembreDernière intervention14 mai 20052 1 déc. 2003 à 16:22
Il faut encoder en base64 ton fichier (algo style UUEncode) et ensuite ajouté le fichier encodé au mail (à la fin en séparant les parties MIME par des balises BOUNDARY).
C'est pas très compliqué à joindre un fichier à un mail en respectant MIME...
Private Function AddHeaderFileSMTP() As String
Dim i As Byte
Const Boundary As String = "TonBoundary"
'Contenu du mail
AddHeaderFileSMTP = AddHeaderFileSMTP + _
strBody + vbCrLf + vbCr + vbCrLf + vbCrLf
' Joint un ou plusieurs fichiers au mail, dont le Path de chaque fichier est contenu dans la liste 'tabFileAttach' (tableau de String)
If nbFileAttach = 0 Then
Exit Function
End If
i = 0
Do While i < nbFileAttach
strFile = OpenFileAPI(tabFileAttach(i).Path)
If strFile = "" Then
'Erreur d'ouverture du fichier à joindre au mail
strErreurSMTP = "Erreur d'ouverture du fichier :" + vbCrLf + """" + tabFileAttach(i).Path + """."
DoEvents
Exit Function
End If
Avec cette fonction, tu peux joindre autant de fichier que tu veux et envoyer le flux au serveur SMTP (dans l'étape de fin DATA du protocole).
Je vais me motiver pour mettre ma source sur le site, ce sera plus simple...
cs_fraboulet
Messages postés37Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention27 avril 2006 1 déc. 2003 à 14:18
Déja fait...C'est de ce site que je me suis inspiré pour faire mon client...mais j'ai tout de même des prbs!
Ton prog en question utilise le MIME? Si oui, n'hesite pas à me le mailer (si tu l'as encore!)sinon t'utilises quoi pour attacher sans utiliser MAPI??
jockos
Messages postés321Date d'inscriptiondimanche 22 octobre 2000StatutMembreDernière intervention14 mai 20052 1 déc. 2003 à 14:10
le MIME, c'est un vrai casse tête...
;)
pour faire un bon client Mail en VB, il faut bien comrpendre MIME. Il y a une assez bonne description sur ce site : www.salemioche.com
Ou carrément se plonger dans la RFC.
cs_fraboulet
Messages postés37Date d'inscriptionmardi 8 juillet 2003StatutMembreDernière intervention27 avril 2006 1 déc. 2003 à 13:37
OK, l'idée est bonne, mais il est dommage qu'elle nécessite un serveur open relay!
jockos, je suis très intéressé par ton prog avec winsock, j'ai essayé avec VB6 et je ne parviens pas à faire fonctionner le MIME!
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 8 févr. 2003 à 01:36
si tu avais lu entierement mon post, tu aurais lu que cette erreur se genere lorsque le server smtp utilisé n'est pas free relay... pour une liste de serveur free relay...contactes moi...
cbjp85
Messages postés34Date d'inscriptionvendredi 22 novembre 2002StatutMembreDernière intervention 6 avril 2003 7 févr. 2003 à 23:03
Le code source génère une erreur : Impossible d'acceder à l'objet 'CDO.Message'.
Je suis débutant en VB et je ne sais pas ce que je peux faire. Pouvez vous m'aider svp !!??
cs_guyvdv
Messages postés101Date d'inscriptionsamedi 16 mars 2002StatutMembreDernière intervention19 mai 20111 20 janv. 2003 à 18:30
Biensur Jockos, metre sur le site est une bonne idee.
Je veux essayer d'en faire un programme pour envoie d'un mailling a mais clients.
GUY van der Velden
jockos
Messages postés321Date d'inscriptiondimanche 22 octobre 2000StatutMembreDernière intervention14 mai 20052 20 janv. 2003 à 14:55
Moi, j'ai développé un code qui marche juste avec Winsock...(pas besoin de passer par Outlook).
J'envoie les données avec le protocol SMTP à un serveur quelconque...(smtp.wanadoo.fr par exemple).
On peut envoyer plusieurs fichiers joints, à plusieurs destinataires...
Si ça interresse des personnes, je le mettrais sur ce site, car je ne suis pas sûr qu'il y ait dejà des sources qui fasse cela...
badconex
Messages postés5Date d'inscriptionvendredi 3 janvier 2003StatutMembreDernière intervention23 janvier 2003 19 janv. 2003 à 20:19
Ah merci, justement
j'essayait d'utiliser cet dll ya quelque jour mé jy suis pas arrivé, c sympa
vive vb.net
10/10
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 19 janv. 2003 à 14:27
non smtp.free.fr n'est pas open relay... voila une toute petite liste de serveur dont c'est le cas (je vais pas non plus pousser au spam, si vous en voulez plus, mailez moi ou laisser un msg ici) vu qu'apparement c'est de moins en moins courant (moi mon provider le fait, mais je le donne pas ^^ ) :
apres tous sont + ou - rapides... je suis en train de creer une liste a mettre a jour de serveurs open relay, mailez moi si cela vous interesse.
Et pour ce qui est de la question de ronanry, je vais essayer de voir ca... mais au pire il reste les sockets.
cs_iubito
Messages postés629Date d'inscriptionmercredi 3 juillet 2002StatutMembreDernière intervention 9 octobre 2006 19 janv. 2003 à 12:31
j'arrive pas à le faire marcher. Eske ça fonctionne avec smtp.free.fr ?
ronanry
Messages postés190Date d'inscriptionlundi 25 novembre 2002StatutMembreDernière intervention22 décembre 2009 19 janv. 2003 à 10:06
et comment peut on faire si on est oblige d'avoir un serveur loggue???
hvb
Messages postés939Date d'inscriptionvendredi 25 octobre 2002StatutMembreDernière intervention27 janvier 20093 19 janv. 2003 à 04:01
c'est pas parcque tu sais pas lancer une source et trouver un server en open relay qu'il faudrait sous-noter le code... ca ne merite pas vraiment de note, c'est surtout la à titre d'exemple...
cs_Fornikator
Messages postés43Date d'inscriptionjeudi 6 juin 2002StatutMembreDernière intervention 8 juin 2004 19 janv. 2003 à 01:12
24 mars 2009 à 16:34
24 mars 2009 à 15:17
j'ai testé cette source et elle fonctionne plutôt bien. Cependant il y a une chose qui ne fonctionne pas, c'est l'envoi de l'email en copie caché (Bcc), on peut ajouter une adresse email à qui on veut envoyer une copie caché mais dans la fonction, ce n'est pas traité. Donc finalement on rentre une adresse inutilement.
Est-ce que qqun peut me donner un coup de main pour faire fonctionner ça svp ?
12 nov. 2007 à 21:05
Bon code, il m'a bien servi.
Cependant, j'ai une question. J'ai le problème suivant. Pendant l'envoi de l'email, la pièce jointe est en lecture seule. Mon problème, c'est que dans mon appli, même après que le message soit envoyé, le fichier joint reste en lecture seule (base de données). Y a t il des ressources à libérer? car je suppose que l'objet créé pour attacher le fichier n'est pas détruit et donc que la pièce reste en lecture seule, jusqu'à ce que l'appli se femre complètement.
21 nov. 2006 à 19:29
Désolé pour mon imprécision, et merci à tous pour la diffusion du code source, une des rares choses encore paragées sur la planete... Salutations
21 nov. 2006 à 18:48
La grosse difference, c'est que tu utilise pas la toute premiere version du framework (ce qui etait le cas ici) et donc que tu peux specifier le serveur smtp sans bidouilles. ^^
et si j'etais pas une grosse faignasse, je mettrais ma source à jour mais bon... :)
21 nov. 2006 à 01:32
Le lien vers la source : http://www.vbfrance.com/code.aspx?ID=40401
Salutations
30 avril 2006 à 09:06
24 avril 2006 à 17:37
21 déc. 2004 à 13:23
Voici ce qu'il faut rajouter pour être authentifié sur un serveur non open relay tel que free, laposte, ect...
Avant l'envoi du mail, ajouter :
DotNetMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1")
DotNetMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "nom")
DotNetMail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "mdp")
1 déc. 2003 à 20:01
RQ : N'HESITE PAS A PLACER TON SOURCE SI IL FONCTIONNE CAR IL EST DIFFICILE DE TROUVER UN CLIENT SMTP COMPLET!! (MAIL + FICHIER JOINT)
Merci encore!
1 déc. 2003 à 16:22
C'est pas très compliqué à joindre un fichier à un mail en respectant MIME...
Private Function AddHeaderFileSMTP() As String
Dim i As Byte
Const Boundary As String = "TonBoundary"
AddHeaderFileSMTP = "MIME-Version: 1.0" + vbCrLf + _
"Content-Type: multipart/mixed; " + _
"boundary=" + """" + "----=_" + Boundary + """" + vbCrLf + _
"X-Mailer: VB jock" + vbCrLf + vbCrLf + _
"This is a multi-part message in MIME format." + vbCrLf + vbCrLf
AddHeaderFileSMTP = AddHeaderFileSMTP + _
"------=_" + Boundary + vbCrLf + _
"Content-Type: text/plain; charset=" + """" + "iso-8859-1" + """" + vbCrLf + _
"Content-Transfer-Encoding: 8bit" + vbCrLf + vbCrLf
'Contenu du mail
AddHeaderFileSMTP = AddHeaderFileSMTP + _
strBody + vbCrLf + vbCr + vbCrLf + vbCrLf
' Joint un ou plusieurs fichiers au mail, dont le Path de chaque fichier est contenu dans la liste 'tabFileAttach' (tableau de String)
If nbFileAttach = 0 Then
Exit Function
End If
i = 0
Do While i < nbFileAttach
strFile = OpenFileAPI(tabFileAttach(i).Path)
If strFile = "" Then
'Erreur d'ouverture du fichier à joindre au mail
strErreurSMTP = "Erreur d'ouverture du fichier :" + vbCrLf + """" + tabFileAttach(i).Path + """."
DoEvents
Exit Function
End If
strFileNameSend = tabFileAttach(i).name
AddHeaderFileSMTP = AddHeaderFileSMTP + _
"------=_" + Boundary + vbCrLf + _
"Content-Type: application/octet-stream;" + vbCrLf + _
" name=" + """" + strFileNameSend + """" + vbCrLf + _
"Content-Transfer-Encoding: 7bit" + vbCrLf + _
"Content-Disposition: attachment;" + vbCrLf + _
" filename=" + """" + strFileNameSend + """" + vbCrLf + vbCrLf
AddHeaderFileSMTP = AddHeaderFileSMTP + _
UUEncode(strFile) + vbCrLf
i = i + 1
Loop
AddHeaderFileSMTP = AddHeaderFileSMTP + _
"------=_" + Boundary + vbCrLf
End Function
Avec cette fonction, tu peux joindre autant de fichier que tu veux et envoyer le flux au serveur SMTP (dans l'étape de fin DATA du protocole).
Je vais me motiver pour mettre ma source sur le site, ce sera plus simple...
1 déc. 2003 à 14:18
Ton prog en question utilise le MIME? Si oui, n'hesite pas à me le mailer (si tu l'as encore!)sinon t'utilises quoi pour attacher sans utiliser MAPI??
1 déc. 2003 à 14:10
;)
pour faire un bon client Mail en VB, il faut bien comrpendre MIME. Il y a une assez bonne description sur ce site : www.salemioche.com
Ou carrément se plonger dans la RFC.
1 déc. 2003 à 13:37
jockos, je suis très intéressé par ton prog avec winsock, j'ai essayé avec VB6 et je ne parviens pas à faire fonctionner le MIME!
8 févr. 2003 à 01:36
7 févr. 2003 à 23:03
Je suis débutant en VB et je ne sais pas ce que je peux faire. Pouvez vous m'aider svp !!??
20 janv. 2003 à 18:30
Je veux essayer d'en faire un programme pour envoie d'un mailling a mais clients.
GUY van der Velden
20 janv. 2003 à 14:55
J'envoie les données avec le protocol SMTP à un serveur quelconque...(smtp.wanadoo.fr par exemple).
On peut envoyer plusieurs fichiers joints, à plusieurs destinataires...
Si ça interresse des personnes, je le mettrais sur ce site, car je ne suis pas sûr qu'il y ait dejà des sources qui fasse cela...
19 janv. 2003 à 20:19
j'essayait d'utiliser cet dll ya quelque jour mé jy suis pas arrivé, c sympa
vive vb.net
10/10
19 janv. 2003 à 14:27
ns2.heartlandexpress.com
pool-129-44-35-231.ny325.east.verizon.net
194.204.205.15
194.206.228.97
200.27.165.233
apres tous sont + ou - rapides... je suis en train de creer une liste a mettre a jour de serveurs open relay, mailez moi si cela vous interesse.
Et pour ce qui est de la question de ronanry, je vais essayer de voir ca... mais au pire il reste les sockets.
19 janv. 2003 à 12:31
19 janv. 2003 à 10:06
19 janv. 2003 à 04:01
19 janv. 2003 à 01:12