begin process at 2012 02 12 23:49:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > WINSOCK ENVOI MAIL FICHIERS JOINTS MULTI DESTINATAIRE

WINSOCK ENVOI MAIL FICHIERS JOINTS MULTI DESTINATAIRE


 Information sur la source

Note :
10 / 10 - par 17 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Initié Date de création :01/12/2003 Vu / téléchargé :11 604 / 2 762

Auteur : jockos

Ecrire un message privé
Commentaire sur cette source (52)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Comme promis, je post le code que plusieurs personnes m'ont demandé...

Ce code permet d'envoyer un mail à plusieurs destinataires avec plusieurs fichiers joints uniquement avec un simple contrôle Winsock.

J'ai développé moi même tout le code sauf la fonction d'encodage en Base64 que j'ai repris sur ce site.

J'ai terminé ce code il y a plusieurs mois, mais il était incorporé dans un logiciel commercial de cryptage que j'ai développé et j'ai donc récupéré uniquement la partie SMTP de mon logiciel. Il se peut qu'il y ait quelques bugs...



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

SHELLEXECUTEEX : OUVRIR FICHIER AVEC SON LECTEUR PAR DÉFAUT ...
Source avec Zip RESIZING PRO
OUVRIR N'IMPORTE QUEL FICHIER AVEC READFILE (API)

 Sources de la même categorie

Source avec Zip Source avec une capture GESTIONNAIRE DE TÉLÉCHARGEMENT, AVEC REPRISE ET MULTITHREADI... par Madx23
Source avec Zip Source avec une capture CONVERTIR DU TEXTE RTF EN CODE HTML ET VICE-VERSA par vicosta
Source avec Zip Source avec une capture DICTIONAIRE TEXT/AUDIO/VISUELLE ANGLAIS AVEC WEBBROWSER CONT... par majnounmajda
Source avec Zip Source .NET (Dotnet) NSLOOKUP EN VB.NET OU COMMENT FAIRE UNE REQÛETE DNS EN PRÉCI... par ShareVB
Source avec Zip Source avec une capture MINI SEVEUR HTTP AVEC INTERFACE GRAPHIQUE ET IMPLÉMENTATIONS... par lemout

Commentaires et avis

Commentaire de Sirocooo le 02/12/2003 09:37:01

quel est l'avantage de se servir de winsock ?

Commentaire de jockos le 02/12/2003 10:16:13

arf... ^^
Ce prog sert à voir comment faire pour créer un client Messagerie en VB (qui envoi uniquement des mails) en utilisant uniquement le control Winsock.
Cependant, j'ai aussi un programme qui va chercher les mails sur un serveur POP et qui détache les fichiers.
Et surtout, ce code sert à montrer comment envoyer un mail avec des fichiers joints car aucun code ne fait ça sur le site et on m'a beaucoup demandé mon code quand j'en ai parlé...

Commentaire de yannn le 02/12/2003 15:31:03

Un programme qui marche au poil !!!
je te mets 10/10 ... et un peu plus si tu me dis comment changer le nom de l'envoyeur ... ton programme met d'office "toto@mondomaine.fr"... ou changer cette valeur ? quelle ligne de commande changer dans ton prog pour choisir quel expéditeur mettre ?

Commentaire de yannn le 02/12/2003 15:34:41

Encore une petite chose ... pourrais tu mettre ton autre prog qui va chercher les mail sur serveur POP ? merci .

Commentaire de jockos le 02/12/2003 15:47:24

tu as juste à cliquer sur le bouton "OPTION" dans la barre de bouton et tu verras que tu peux configurer :
    - l'adresse du sereur SMTP
    - ton adresse mail
    - cocher une case si tu veux recevoir une copie des mails envoyés

Je mettrais mon prog POP un peu plus tard car je n'ai pas le temps pour le moment...

Commentaire de yannn le 02/12/2003 16:50:29

Encore une petite chose ... pourrais tu mettre ton autre prog qui va chercher les mail sur serveur POP ? merci .

Commentaire de yannn le 02/12/2003 17:00:08

Comment faire pour ajouter le "Yann Programmateur amateur" de l'adresse email : "Yann Programmateur amateur"<Yann@yahoo.fr> ?

Commentaire de jockos le 02/12/2003 17:08:20

arf... ok...
d'abord, regarde comment est faite la structure d'un mail en ouvrant un mail au format brut. c'est très instructif...

Pour ajouter ce que tu veux,  il faut ajouter cela au niveau DATA du protocol SMTP.

Dans la procédure ProcessDataArrivalSMTP
Dans le Case 4
Tu as :
fMainForm.WinsockMail.SendData "From: <" + strExpediteurMail + ">" + vbCrLf
DoEvents

Tu ajuste à rajouter "Yann Programmeur amateur" après le "From:" et entre  doubles quotes.

Un truc du genre :
Dim strExpediteurName as String

strExpediteurName = """"+"Yann Programmeur amateur"+""""

Et tu remplaces la ligne de code par celle ci :
fMainForm.WinsockMail.SendData "From: " + strExpediteurName + "<" + strExpediteurMail + ">" + vbCrLf
DoEvents

Tiens moi au courant en cas de problème...

Commentaire de yannn le 02/12/2003 18:04:44

Oui ... ca marche a peu pret... en fait je voudrai que n'apparaisse que
"Yann Programmeur amateur" dans la présentaion du mail et pas "Yann Programmeur amateur <Yann@haoo.fr>" vois tu  ce que je veux dire ?

Commentaire de yannn le 02/12/2003 18:22:07

Salut Jockos ...
Comme j'ai l'impression que mes explications ne sont pas calires ... et qu'un dessin vaut parfois mieux que de long discours ... j'ai fait un peit montage pour te faire voir de quoi je parle .. :(Lien ci joint ) :



http://vbfrance.com/forum.v2.aspx?ID=163471

Commentaire de yannn le 02/12/2003 18:32:36

Excuse moi mon ami ...
Je viens de trouver ... je croyais que tu m'avais di de le placer entre les <> alos qu'il falait le placer entre le form: et le premier <...
Merci pour tes explications .
J'attends avec hate ton prog qui va cherche sur les serveurs pop !

Commentaire de jockos le 02/12/2003 18:35:18

tu n'as même pas noté mon code... snif... :' yu m'avais pourtant promis un 10... snif... :(
lol ;)

Commentaire de yannn le 02/12/2003 18:38:48

Erreur réparée !!!
:p

Commentaire de yannn le 02/12/2003 18:39:44

Tu pourras le mettre qd ton code POP ? J'en ai vraiment ras le bol de ce outlook !!!

Commentaire de jockos le 02/12/2003 18:40:13

lol
merci...
:]

Commentaire de jockos le 02/12/2003 18:49:32

Mes softs ne remplasseront jamais un soft de la qualité de Outlook, c'est juste de l'open source pour faire profiter mon code aux autres programmeurs...
Si tu veux faire un soft comme Outllook, il faut rajouter des fonctionnalités, comme par exemple une boite de reception, une boite d'envoi (pour envoyer plusieurs mails différents en même temps au serveur SMTP.....).

Mon prog POP est terminé, mais c'es un prog que j'ai développé pour une appli commercial et je dois le détacher de mon appli... et le retravailler un peu pour enlever quelques petites fonctionnalités interressantes... j'ai fais pareil pour mon prog SMTP (j'ai pas envie de me faire piquer mon travail en le mettant en open source)... ;)

Je mettrais le programme POP quand j'aurais plus de temps...

Commentaire de yannn le 02/12/2003 18:57:16

OK ... merci pour tout !

Commentaire de yannn le 02/12/2003 19:24:20

En fait ... si j'ai une question : Pourquoi ton programme n'envoie pas ce qu'il y a dans les  () ? exemple : "Yann (Programmeur amateur)<Yann@haoo.fr>" ... donne : Yann
??? j'ai du mal a comprendre .. ?

Commentaire de jockos le 02/12/2003 19:51:18

Regarde le mail que tu reçoit dans son format brut (en l'ouvrant avec Outlook en faisant propriétés pui détails pui source du message).

Ensuite, envoi toi un mail avec Outlook et ouvre le dans son format brut et compare les 2 mails (celui envoyé par mon prog et celui envoyé par outlook) dans la partiee du "from:"...

C'est un problème que tu peux aisément résoudre tout seul...

Je pense que c'est un problème de double quotes... """"""
;) ou alors d'encodage du message... utilise ma fonction formatMIME pour cette String pour voir si ça marche...

A+

Commentaire de yannn le 02/12/2003 20:31:23

Encore une fois tu avais raison !!!

Commentaire de jockos le 02/12/2003 21:26:00

ok cool...
;)

Commentaire de yannn le 02/12/2003 22:06:18

Je souhaite faire quelques changement ... Oh ... rassures toi rien de tres mechant ... souhaites tu que je t'envoie les sources une fois que je les aurais modifiées ?
Si oui ... donne moi un mail ou je puisse te les envoyer ...
Bonne soirée !
Et encore merci !

Commentaire de Psykos7 le 03/12/2003 01:18:44

comme c'est touchant cette amitié ;P

Commentaire de jockos le 03/12/2003 09:57:34

lol... ;p

Tu peux faire autant de changements que tu veux. Si j'ai mis mon code sur le site, c'est pour qu'il soit utiliser par des programmeurs dans leur propre travaux.

Par simple curiosité, je voudrais bien que tu m'envois les sources quand tu auras finis...

Merci de l'avoir demandé...

Commentaire de fraboulet le 04/12/2003 13:16:24

(re-bonjour jockos!)

Pfouuuu, superbe travail! Ton code, même si je n'ai pas terminé de l'étudier à l'air de fonctionner à merveil, avec une interface bie travaillée!

Félicitation, car tu (à ma connaissance) es le premier a fournir les sources d'un client si complet sur le site (SMTP + MIME)!

ça mérite un 20/10, mais y pô alors t'auras que 10/10!

Commentaire de jockos le 04/12/2003 13:27:13

Attend de voir le client POP que je vais mettre bientôt sur le site... ;) (bon, j'arrête sinon j'ai les chevilles qui vont enfler... ;p)
En tous cas merci pour les commentaires... j'espère que ce code vous servira et que vous pourrez l'utiliser dans vos projets.

Mon code n'est pas très optimisé et clean au niveau de la partie client SMTP mais je l'améliorerais quand j'aurais le temps...

Commentaire de Maxilie le 09/12/2003 11:13:12

Rien à dire à part 10/10

Commentaire de Romu34 le 13/12/2003 12:28:12

Super ! Beau travail : 10/10 et Merci ;-)

Commentaire de pcpunch le 28/01/2004 18:40:00

10/10 Enfin un qui marche!! Bon taff

Commentaire de pcpunch le 30/01/2004 01:05:02

Slt bon ton code est trés bien, mm trop bien pour moi car j'y pige que dalle lol

En fait je cherche a attaché un fichier avec mon mail, mais je cherche en vain!!!! Voila comment se presente mon code (une partie)

Private Sub Winsock1_Connect()
Dim DataFile As String
DataFile = UUEncodeFile("C:\test.txt")
    ' La connection est etablie on envoie maintenant les données
    Dim Send(1 To 9) As String
    
    ' Les donnees a envoyer
    Send(1) = "HELO " & "smtp.wanadoo.fr" & vbCrLf
    Send(2) = "MAIL FROM:" & "<" & "jean-philippe@wanadoo.fr" & " > " & vbCrLf
    Send(3) = "RCPT TO:" & "<" & "pcpunch59@hotmail.com" & ">" & vbCrLf
    Send(4) = "DATA" & vbCrLf
    Send(5) = "from: " & Chr$(34) & "jean-philippe@wanadoo.fr" & Chr$(34) & "<" & "jeanphi" & ">" & vbCrLf
    Send(6) = "to: " & "<" & "pcpunch59@hotmail.com" & ">" & vbCrLf
    Send(7) = "subject: " & "Test messagerie" & vbCrLf & vbCrLf
    Send(8) = "Message" & vbCrLf & vbCrLf & "." & vbCrLf
    Send(9) = "QUIT"
    ' maintenant on les envoie en verifiant qu'il n'y a pas d'erreur
    On Error GoTo Erreur
    For x = 1 To 9
        Winsock1.SendData Send(x)
        Me.Print x
        DoEvents
    Next x
    Winsock1.Close
    MsgBox "Envoi effectué avec succès!"
    Exit Sub
Erreur: MsgBox "erreur"
    Exit Sub
End Sub

On ma filer une fonction UUEncodeFile pour envoyer mon fichier dans la partie data, mais rien ne marche alors si qq peu ma'aider

Commentaire de jockos le 30/01/2004 17:51:45

Aie aie aie...
Pose ce genre de question dans ce forum stp... c'est fait pour cela...
Je comprend que tu n'ai rien compris à mon code...

Pour faire rapide, ton problème, c'est que tu n'as pas compris ce qu'étais un dialogue Client/Serveur synchrone.

Il ne faut pas envoyer tout d'un coup au serveur SMTP... ça se fait étape par étape ou message par message si tu préfères... (en attendant un acquittement du serveur netre chaque message).

Tu envoi un premier message et tu attend la réponse du serveur qui te dit : "OK, j'ai bien reçu ton message, tu peux envoyer la suite". Alors, tu envoi un autre message au serveur et ainsi de suite...
En respectant évidemment le PROTOCOL de niveau Applicatif utilisé entre le client et le serveur.

Il faut à tout prix que tu comprennes les bases d'un dialogue client/serveur si tu veux pouvoir programmer cela...

Pour résumer :
1- Tu envoi un message correct (syntaxe) au serveur
2- Tu attend la réponse du serveur (boucle d'attente)
3- Dès que tu reçois la réponse du serveur, tu retournes au point 1.

Bon courage...

Commentaire de swaynee le 18/03/2004 18:42:27

Alors moi je ne mettrais que 9,5 sur 10, car il y a un petit bug avec l'envoi des fichiers attachés. L'encodage en base 64 a un bug, qui fait que à l'arrivée, le fichier joint perd un ou deux octets, dans 25% des cas, c'est selon la taille du fichier au départ. Et ça peut être très ennuyeux si c'est un fichier zip attaché, car il pourra donc être corrompu à l'arrivée.

La correction est à faire dans le module base64, dans le sub Encode64. Il faut remplacer :

       cbLines = 1
par
       cbLines = 0

Sinon, tout le reste marche fort bien ;-)


Commentaire de jockos le 19/03/2004 00:00:42

Regarde ce que j'ai mis dans les commentaires de ma source :

"J'ai développé moi même tout le code sauf la fonction d'encodage en Base64 que j'ai repris sur ce site."

Comme quoi, j'aurais du bien testé cette fonction avant de l'insérer dans mon code...
:)

Merci pour la remarque...

Commentaire de swaynee le 19/03/2004 18:11:32


J'avais bien lu ton commentaire, ainsi que l'entete du module ;-)

Je mettais 9,5 pour l'ensemble du pgm. Alors disons 10 pour ton code à toi, et 5 pour le module base64.bas ;-)

Alors en retestant aujourd'hui, je me suis aperçu que la correction que j'indiquais hier n'est pas bonne : elle corrigeait mon cas de test, mais je continuais à perdre un octet ou deux avec d'autres fichiers attachés, de longueurs différentes.

Donc la correction définitive, qui marche vraiment celle là, c'est remplacer :

    ' Add one or two bytes Base64_EOF
    Select Case (cbSize - EOL_SIZE * cbLines) Mod 3

par

    ' Add one or two bytes Base64_EOF
    Select Case (ptMax) Mod 3

En clair, pour ajouter les 1 ou 2 caractères à la fin de l'encodage, faut effectivement faire un modulo 3, mais pas avec la formule qu'il utilise. Faut simplement calculer le modulo sur la longueur de la chaine en entrée, soit la longueur du fichier à attacher. Là ça marche impec.

Pour valider, je me suis servi d'un site très pratique (http://cyrille.balland.free.fr/base64.htm), qui permet de tester l'encodage/décodage en base64 via un simple code javascript.

En tout cas, merci pour ton source.

Commentaire de fredenho le 29/03/2004 11:13:47

Salut,...
Et bien moi je n'arrives pas à le faire fonctionner!! :-(
Il envoie bien le mail mais c'est au niveau de la piece jointe qu'il y a bug....
Au lieu de m'envoyer le fichier joint, il m'envoie le codage effectué au fichier....
Est ce un problème de ma messagerie???
merki...

Commentaire de jockos le 29/03/2004 11:44:11

Certainement un problème au niveau des balises de délimitage "Boundary".

Peux-tu afficher le source de ton mail quand tu le reçois (car je suppose que tu te l'ai envoyé à toi même pour tester).

Si tu as Outlook, tu click-droit sur le mail, tu fais Propiétés, onglet Détails et Source...

Commentaire de fredenho le 29/03/2004 11:55:44

Tu vas pas me croire mais j'utilise Lotus Notes.....
Mais voila ce qu'il me met à la place du fichier....

------=_BaliseMIME
Content-Type: application/octet-stream;
   name="Nom_du_fichier"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
   filename="Nom_du_fichier"

W0dlbmVyYWxdDQoNCk5vbUV4cD1Gculk6XJpYyBS
b2RyaWd1ZXMNCk1haWxFeHA9ZnJvZHJpZ3Vlc0Bh
cmVzLmZyDQpOb21EZXN0aW49RnJlZG8NCk1haWxE
ZXN0aW49ZnJvZHJpZ3Vlc0BhcmVzLmZyDQpQaWVj
ZUpvaW50ZT0NCg==
------=_BaliseMIME

Merki Mille fois! :-o

Commentaire de COlive le 17/04/2004 00:06:39

Salut ! Ton code est tres bien foutu, et tres bien commenter.
J'ai tout de même une question, peut être bête , allez donc savoir...
Dans ton Module ClientSMTP, il y a une procédure SendMail et une procédure SendFile. SendFile n'est jamais appelée, dans aucun endroit du programme, puis avoir une tite explication ?
Je cherche en effet à pouvoir utiliser tes fonctions d'envoi sans interfaces. Car si je suis bien tout ce qui ce passe, SendMail fait bien tout le travail. Donc Sendfile à quoi sert - il ?
Cordialment.

Commentaire de jockos le 17/04/2004 15:11:14

Il ne sert à rien... :-)

Commentaire de Silenzer le 16/08/2004 15:32:02

salut !

pour commencer je tiens à dire que ton prog est plutot sympa. J'ai remodeler le tout sans interface, mais il me reste un petit soucis ... J'attache toujours un fichier lors de l'envoie du mail, ca fonctionne nickel. Par contre lorsque j'ouvre ce dernier mail, je vois deux fichiers attachés et non un ... j'ai bien mon fichier , mais j'ai aussi un fichier portant l'extension .ATT et celui-ci est vide. Il y a t'il un moyen de ne pas envoyer ce ficier vide? je ne sais pas du tout quand il est créé ....

merci d'avance ;)
Rod

Commentaire de kikipounque le 11/01/2005 11:41:12

Très bon travail 10/10. une broutille cependant, pour enlever le trombone qui apparait dans la boite de reception mail alors que l'on a pas envoyer de piece jointe, il faut juste déplacer le bloc suivant au debut de la fonction AddHeaderFileSMTP() et non avant la boucle.

    If nbFileAttach = 0 Then
        Exit Function
    End If

Sinon comment faire pour enlever le fichier vide qui est joint avec la piece jointe ?

merci

Commentaire de mejdi1 le 20/04/2005 17:38:14

avoir les codes

Commentaire de Monoprix le 14/06/2005 11:27:03

Salut,
HELP me please pas moyen de faire fonctionner ce code, il me manque la librairie
winsock, je la cherche depuis des heure en vain. J'attend une âme charitable merci.

Commentaire de manuds le 14/06/2005 15:15:56

salut bon code mais j'ai un pb : j'ai toujour un fichier txtx attxxxxxx.txt avec mes piece jointe...
qq connait la soluce pour le supprimer??
merci

Commentaire de P__ROMEO le 25/10/2005 19:16:26

Salut.
cela fait des années que tu a posté ce code, et toujours aussi aprécier.
Merci pour cette source.
je n'ai pas encore réelement lu le code, mais, l'envoie de mail se fait sans problème.

et ta phrase:
Cependant, j'ai aussi un programme qui va chercher les mails sur un serveur POP et qui détache les fichiers.

ca ne nous ferrais que du bien que tu mettes un bou de ce code. même sans les obtions. juste pour démarrer.

A+

Commentaire de Tyrouk le 09/11/2005 14:13:06

10/10 : code super clair, un plaisir à lire merci ! Sa va me faire gagner énormément de temps pour faire mon appli.

Commentaire de SgtKabukinan le 18/01/2006 12:57:12

oui a croire que certaines choses ne périssent jamais ;)
10/10 aussi !

Commentaire de Cobaille69 le 25/05/2006 22:56:45

lol, la librairie Winsock se dl sur microsoft.com je crois sinon très facilement sur google.

Commentaire de adlerjj le 08/08/2006 19:17:18

Je voudrais savoir comment faire pour ajouter plus qu'un destinataire. Lorsque j'essai d'envoyer le courriel à 2 personnes soit : courriel1@domain.com; courriel2@domain.com et je reçois un message d'erreur.

Merci d'avance pour l'information.

Commentaire de bamphi le 30/08/2007 19:17:52

Bonjour,

Comme tous les précédents ... Bravo pour vote Code !
Cependant je n'arrive pas à changer « Toto@nomdomaine.fr »
malgré le paramétrage !!!
Merci de vos lumières
Cordialement
Bamphi

Commentaire de mjhassan le 06/11/2007 19:14:24 10/10

Salut,
Ton programme mérite un grand chapeau merci chef c'est un bon travail, tu m'a ennormement aider surtout pour les fichier attaché j'an avait besoin des tuyeau comme ça

Encors merci chef.
Et bon courage.

Commentaire de phil63840 le 17/04/2009 09:17:12 10/10

Et 5 ans plus tard on utilise encore ton code, bravo...
As-tu finalement partagé ton code POP3 qui fait bien défaut pour aller récupérer des mails et en détacher les fichiers joints ?
Encore merci.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,061 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales