begin process at 2012 02 12 18:14:06
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > ENVOYER UN E-MAIL AUTONOME (SANS MAPI) *-

ENVOYER UN E-MAIL AUTONOME (SANS MAPI) *-


 Information sur la source

Note :
8,65 / 10 - par 136 personnes
8,65 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :envoyer, mail, winsock Niveau :Initié Date de création :28/07/2000 Date de mise à jour :12/10/2001 00:00:00 Vu :60 386

Auteur : Bitored

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

 Description

Bien le bonjour !
Voici un petit code pour envoyer des e-mails sans MAPI, la seule contrainte du code est que l'ordi doit être connecté, c'est tout.
Ce code est à mettre dans un module, la fonction Envoyer retourne TRUE si l'e-mail a été envoyé, FALSE si non. Vous devez passer en (premier) parametre un control Winsock.
Le dernier parametre est votre serveur mail de courrier sortant (SMTP), vous pouvez jeter un coup d'oeuil a la fin pour en avoir une liste de libres.
Le code ayant été très peu testé, il peut y avoir des erreurs, merci de les signaler, ou de les réparer sans grogner.
Bon dévellopement, et merci à VBCS.

Source

  • Option Explicit
  • Dim Sock As Winsock
  • Function Envoyer(Socket As Winsock, Nom_Exped As String, Mail_Exped As String, Nom_Destin As String, Mail_Destin As String, Objet As String, Optional Sujet As String = "", Optional Serveur As String = "Serveur Par Defaut") As Boolean
  • Envoyer = False
  • Set Sock = Socket
  • Sock.Close
  • Sock.RemotePort = 25
  • Sock.RemoteHost = Serveur
  • Dim T(6) As String
  • Dim mFrom As String
  • Dim mTo As String
  • Dim mMess As String
  • mFrom = Nom_Exped & " " & "<" & Mail_Exped & ">"
  • mTo = Nom_Destin & " " & "<" & Mail_Destin & ">"
  • mMess = ""
  • mMess = "FROM: " & mFrom & vbCrLf & "TO: " & mTo & vbCrLf
  • If Sujet <> "" Then mMess = mMess & "SUBJECT:" & Sujet & vbCrLf & VbCrLf
  • mMess = mMess & Objet & vbCrLf
  • T(0) = "HELO " & Serveur & vbCrLf
  • T(1) = "MAIL FROM: " & "<" & Mail_Exped & ">" & vbCrLf
  • T(2) = "RCPT TO: " & "<" & Mail_Destin & ">" & vbCrLf
  • T(3) = "DATA" & vbCrLf
  • T(4) = mMess
  • T(5) = VbCrLf & "." & vbCrLf
  • T(6) = "QUIT" & vbCrLf
  • Dim i As Integer, c As Integer
  • Sock.Close
  • Sock.Connect
  • For c = 1 To 10
  • For i = 1 To 5000
  • DoEvents
  • Next i
  • DoEvents
  • If Sock.State = sckConnected Then Exit For
  • Next c
  • If Sock.State <> sckConnected Then Envoyer = False: Exit Function
  • For i = 0 To 6
  • DoEvents
  • If Not SdTxt(T(i)) Then
  • Exit For
  • Err.Number = 1
  • End If
  • Next i
  • If Err.Number = 0 Then Envoyer = True
  • End Function
  • Function SdTxt(txt As String) As Boolean
  • SdTxt = False
  • Dim i As Integer
  • Dim tmp As String * 1
  • For i = 1 To Len(txt)
  • tmp = Mid$(txt, i, 1)
  • Sock.SendData tmp
  • Next i
  • If Err.Number = 0 Then SdTxt = True
  • End Function
Option Explicit
Dim Sock As Winsock

Function Envoyer(Socket As Winsock, Nom_Exped As String, Mail_Exped As String, Nom_Destin As String, Mail_Destin As String, Objet As String, Optional Sujet As String = "", Optional Serveur As String = "Serveur Par Defaut") As Boolean
Envoyer = False
Set Sock = Socket
Sock.Close
Sock.RemotePort = 25
Sock.RemoteHost = Serveur
Dim T(6) As String
Dim mFrom As String
Dim mTo As String
Dim mMess As String
mFrom = Nom_Exped & " " & "<" & Mail_Exped & ">"
mTo = Nom_Destin & " " & "<" & Mail_Destin & ">"
mMess = ""
mMess = "FROM: " & mFrom & vbCrLf & "TO: " & mTo & vbCrLf
If Sujet <> "" Then mMess = mMess & "SUBJECT:" & Sujet & vbCrLf & VbCrLf
mMess = mMess & Objet & vbCrLf
T(0) = "HELO " & Serveur & vbCrLf
T(1) = "MAIL FROM: " & "<" & Mail_Exped & ">" & vbCrLf
T(2) = "RCPT TO: " & "<" & Mail_Destin & ">" & vbCrLf
T(3) = "DATA" & vbCrLf
T(4) = mMess
T(5) = VbCrLf & "." & vbCrLf
T(6) = "QUIT" & vbCrLf
Dim i As Integer, c As Integer
Sock.Close
Sock.Connect
For c = 1 To 10
For i = 1 To 5000
DoEvents
Next i
DoEvents
If Sock.State = sckConnected Then Exit For
Next c
If Sock.State <> sckConnected Then Envoyer = False: Exit Function
For i = 0 To 6
DoEvents
If Not SdTxt(T(i)) Then
Exit For
Err.Number = 1
End If
Next i
If Err.Number = 0 Then Envoyer = True
End Function

Function SdTxt(txt As String) As Boolean
SdTxt = False
Dim i As Integer
Dim tmp As String * 1
For i = 1 To Len(txt)
tmp = Mid$(txt, i, 1)
Sock.SendData tmp
Next i
If Err.Number = 0 Then SdTxt = True
End Function
   

 Conclusion

J'ai apporté 2 petites rectifications. j'espère que ça marchera mieux maintenant.
----------------------
Bon, on m'a demandé un exemple et des serveurs libres (difficiles a trouver d'ailleurs, alors si vous en avez, mailez-les moi svp...).
*Liste de serveurs:
- mail.mageos.com

*Exemple:
Vous mettez dans une feuille de nom "Form1" un controle WInsock de Nom "Sock1".
Propriétés du message:
Exepediteur: Nom: Jean | Mail: Jean@piu.com
Destinataire: Nom: Pierre | Mail: Pierre@yoa.com
Sujet: "Salut c'est Jean..."
Objet: "Ca va ? Je voulais te dire que ma grand-mére était championne de Karate-Do poids lourd, c'est tout... Ciao."
Serveur: "mail.mageos.com"

Donc vous allez envoyer ça comme ça :

Envoyer Form1.Sock1, "Jean", "Jean@piu.com", "Pierre", "Pierre@yoa.com", "Ca va ? Je voulais te dire que ma grand-mére était championne de Karate-Do poids lourd, c'est tout... Ciao.", "Salut c'est Jean...", "mail.mageos.com"
... et c'est tout ! Pas dur quand même !


 Sources du même auteur

Source avec Zip UN JEU ONLINE (MORPION) + UN CHAT *-

 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

 Sources en rapport avec celle ci

Source avec Zip OCX DE TRANSFERT, ENVOYER UN FICHIER par Metos62
Source avec Zip Source avec une capture APPLICATION PERMETTANT DE VÉRIFIER L'ÉTAT DE BORNES WIFI EN ... par Jordan59
Source avec Zip ENVOI DE MESSAGE PAR WINSOCK par EddiePonpon
Source avec Zip Source avec une capture MESSAGERIE AVEC WINSOCK - ENVOYER, RECEVOIR, PIÈCES JOINTES par bremondpierrejean
Source avec Zip Source avec une capture ANONYM MAIL SIMPLE ET EXPLIQUÉ (WINSOCK + PROGRESSBAR) par Repie

Commentaires et avis

Commentaire de Hyo le 03/01/2002 22:48:42

Bitored des j'essaie avec plusieurs adresses, certaines me disent Vrai d'autres Faux ... mais ... après 10 minutes je ne reçois encore rien !

Commentaire de devilass le 07/01/2002 21:26:23

pour repondre a yves l'authentification c plutot pr les serveur pop avec lequel tu ne px que consulter ton courrier si tu as un compte chez celui ci (pr se connecter ex: ws.connect  "pop.freesbee.fr" , "110" , les commandes  user pseudo ; pass mot_de_passe ; retr n°_msg ...), ya pas que le smtp ! personnelement  g utilise le pop ds un pgm , pr qu'en 1 clic tu sais si ta des mails et apres eventuellement les lires ....

Commentaire de PtitJeoJeo le 05/02/2002 21:44:31

HELES GARS DESOLE DE DIRE CA MAIS C KOI UN WINSOCK ??? SI KELK1 PEU M AIDER LA DESSUS CA SERAIT COOL !!!! MERCI

Commentaire de Jordel le 14/02/2002 13:18:59

Bonjour a tous,

Tout d'abord meci pour ce code qui a l'air de fonctionner mais j'ai un probleme avec... le sock.state est toujours egal a 6 et le sckconnect a 7...et ce , quoique je fasse. Ce qui a pour but de ne pas envoyer les mails...

Je voudrai savoir si vous avez une sur ce probleme certes mineur, mais qui m'empeche d'avancer dans mon appli...

Merci d'avance.

Jordel

Commentaire de skaferadics le 31/03/2002 17:18:03

salut,

avec ce code l'email est envoyer,mais ca plante :(
???

skafer

Commentaire de pbrossier le 23/04/2002 11:24:40

Salut, en bidouillant un peu, cela fonctionne bien.
Mais pour un dev, un peu plus pro, je vous conseille de visiter l'URL suivante :
http://www.vbip.com/winsock/winsock_simple_sender.asp
C'est en Anglais, mais c'est super bien fait.
A+
et bon courage à tous !

Commentaire de revolt le 24/04/2002 11:04:22

Voici sans aucune garantie donc une liste de serveur SMTP dits "ouverts"
mail.duluthport.com (USA - Minneapolis)
209.50.164.102 (USA - Chicago)
graham.nettlink.net.pk (Pakistan)
mail.bbchs.k12.il.us (USA - Chicago)
mail.q-texte.net.ma (Maroc)

Commentaire de KractRiL le 04/05/2002 00:28:20

Pour envoyer un mail sans avoir besoin de serveur smtp acceptant le relying il suffit de vous connecter au serveur smtp du domaine de la personne qui doit recevoir le mail, et pour savoir son adresse : (seulement pour les utilisateur de windows NT ie : NT4 , 2K et XP )
allez sous dos et tapez :
nslookup
set q=mx
domain.com
vous aurez une ligne mail exchanger qui sera l'adresse d'un des serveur smtp du domaine, bien sur remplacer domain.com par le domaine de l email , par exemple pour missiou@hotmail.com vous remplacez domain.com par hotmail.com . voila j espere en avoir eclairer quelques uns et si vous n avez pas compris mailez moi.
(P.S : je repete que la commande "nslookup" n est possible que sous les windows NT)

Commentaire de anty le 30/05/2002 19:57:20

Bonjour à tous,
J'aimerais savoir comme bcp d'entre nous (enfin je pense...) comment envoyer une piece-jointe avec ce code...
Mais est-ce réellement possible en utilisant winsock???
Merci d'avance
et @++

Commentaire de Alan71 le 21/06/2002 11:37:44

ca fait beaucoup 2 commentaires tout ca !

Commentaire de Clem2k le 13/11/2002 09:08:12

On peut envoyer un mail facilement sans passer par un controle, ou par MAPI il suffit de se servir de la DLL CDONTS.dll (NT4) ou de son equivalent 2000 CDOSYS.dll ... Envoyez moi un message et je posterai des sources si besoin.

Commentaire de monceffnikov le 22/12/2002 10:09:50

bravo pour ce code génial. il fonctionne très bien. chapeau !!!

Commentaire de SHIVA le 08/04/2003 21:22:58

Ca marche !
Merci beaucoup !!!

Commentaire de dlpxlid le 27/05/2003 22:27:10

Salut,

Le code est génial. Ça marche super bien !!! Bravo.

Mais moi aussi, j'aimerais bien savoir comment faire pour envoyer une pièce jointe avec le mail. Malheureusement, il semblerait que l'auteur de cette source reste sans réponse quand on lui pose ce problème. Enfin, personne n'est parfait. C'est déjà très bien d'avoir fait cela.

Commentaire de Nargzul le 26/06/2003 13:11:59

dommage, ca marche pas chez moi, et j'arrive pas à comprendre pourquoi, ya aucun message d'erreure, je pige plus rien...

Commentaire de fox59 le 02/07/2003 10:53:19

'lut, toujours pas de serveur ouvert dispo ??! Thanks lot

Commentaire de happykiller le 04/08/2003 17:08:40

salut, j'aimme bp ton code aussi mais pour qu'il soit parfait qq'un pourait-il me donner les modif à apporter pour joindre une pièce jointe au mail :)

Merci à tous

++

Commentaire de jack le 05/08/2003 12:01:10 administrateur CS

Salut ta tousse
Bien que ne l'ayant pas essayé, il faut savoir que :
- Cette technique ne s'adresse quaux serveurs POP
- Que pour joindre une pièce jointe, il faut encoder le fichier en base 64, c'est à dire encoder avec un jeu de caractères très limité. Cet encodage existe et fonctionne, mais nécessite beaucoup de code (cherchez "Encode64 vb" sur Google).
Pour les anglophiles : http://www.aspalliance.com/wizard/A2OtpP2.asp

Commentaire de happykiller le 05/08/2003 12:23:13

pas faire autrement ? sut

Merci quant même

++

Commentaire de TheDjinn le 26/08/2003 14:52:07

lut ce code marche c'est sur mais
si je puis me permettre une critique les communications clients-serveur doivent se faire par un dialogue (dont l'idee des RFC)
(que ce soit du SMTP, du POP, du ESMTP, du TELNET, du SSH, etc.)
c'est a dire :

&lt;ENVOI D'UNE COMMANDE&gt;
&lt;ATTENTE DE RECEPTION DE LA REPONSE DU SERVEUR&gt;
&lt;ACTION SUIVANTE&gt;

l'action suivante pouvant etre l'annulation de l'envoi du mail si il y a eu une erreur.

et je trouve que ta facon d'attendre l'etablissement de la connection est... zarb ;] (et dangereuse pour peut qu'il y ait un gros lag de fou)

enfin bon en tout cas ton code est tres bien pour parfaitement comprendre la partie emission du protocole SMTP ;)

Commentaire de carpes le 11/09/2003 16:04:18

excellent ce code, marche bien, mais tu devrais préciser pour ceux qui ne connaissent pas comment on ajoute une winsock car ce n'est pas toujours mis par défaut (faut rajouter le composant si pas mis)

Commentaire de CanisLupus le 03/10/2003 17:20:19 administrateur CS

superbe ce code

Commentaire de olivierXIII le 13/10/2003 17:11:36

Bravo ca marche nickel avec le serveur smtp de mon provider.
(mageos marche pas, mais ce qui compte c'est le code, pas le serveur).
Si on veut envoyer des pièces jointes, bah on prend outlook ou autre et c'est tout.

10/10

Commentaire de cyberdetective06 le 27/10/2003 14:28:18

Cela m'avait l'air très interessant, mais pour l'instant, je n'arrive pas à le faire fonctionner .
Dès que ça marche, je le montre en exemple sur mon site !
cela demontre bien ce qu'un programme peut faire avec quelques lignes de codes.

Commentaire de axanet le 06/11/2003 00:58:14

il y a que des fonctions, comment placer le code dans le programme? j'ai crée une feuille, j'ai ajouté un controle winsock, dans lequel j'ai mis le code, mais ca ne marche!

merci de m'indiquer la façon d'utilser ce code.
adresse e-mail: macolombe1@yahoo.fr

Commentaire de VbMaster le 13/11/2003 18:02:05

Salut ce code est super meme s'il ne marche qu'avec le smtp de mon FAI mais bon au moins on n'est pas obliger de s'encombrer avec le MAPI. par contre il n'est pas entièrement anonyme (on peut trouver l'ip du pc ki l'a envoyé avec "source du message" sous outlook express) et le domaine de l'expéditeur doit être valide (par ex : quelqun@yahoo.com marche, mais quelqun@undomaineinexistant ne marche pas)

Commentaire de MuLLinS le 15/11/2003 23:03:30

Comment le faire marcher sous 2000 ?
je clique sur le bouton, g pas derreur, mais je recois aucun mails.
Pourriez-vous m'aider ?

Commentaire de Lewiss le 16/07/2004 17:24:41

Excellent !!!

Ce code est vraiment excellent.

J'ai beaucoup cherché avant de tomber sur quelque chose de fonctionnel, simple et efficace.

Merci beaucoup !

Commentaire de Scalpweb le 19/07/2004 13:28:00

Il est super ce code... Il manque juste un petit .zip

Commentaire de bobo93 le 23/07/2004 07:15:45

Hello everybody, everybody hello !

Un Grand Merci à Bitored pour ce code...simple et efficace à souhait...

A tchao.

Commentaire de daouf70 le 05/08/2004 15:50:26

il me paraît génial,mais il manque seulement le zip,
essayer de le faire stp...

a+

Commentaire de vivino le 12/11/2004 20:56:54

Genial, voila ce que me manquait pour remplacer Outlook qui me prend trop de ressources (il prends un temps du diable à démarrer :-(

Chez moi ça marche tip top et en plus ce code m'a donné l'idée d'aller consulter, avec notepad, un fichier .eml

En regardant l'estructure d'un fichier eml, on peut appprendre beaucoup sur les autres fonctionnalités d'un émail (pièces jointes, photos, etc)

Encore BRAVO pour Bitored qui mérite bien si l'on vote largement pour lui.

Commentaire de DEADisDEADisDEAD le 11/05/2005 07:59:26

Merci, mais il me faudrai un serveur SMTP :'(

Commentaire de Spacemarine le 20/06/2005 16:22:59

Salut
Merci pour cette source de très  bonne qualité
Je débute en programmation et j'essaye vainement depuis deux semaines de compléter ce programme:

je voudrais ajouter un accusé de réception pour etre prevenu quand le destinataire a recu le mail.

Est-il possible d'utiliser Disposition-Notification-to en vba?
quelquechose dans le genre : myMail.Headers.Add("Disposition-Notification-To",
"Expediteur@hotmail.com");
(http://www.csharpfr.com/code.aspx?ID=25907)
Ou alors utiliser "Return-Receipt-To" ??

Je suis vraiment bloqué... Si quelqu'un peut m'aider c vraiment trop cool et je pense que ca en interessera plusieurs

Commentaire de Design_sri le 10/01/2006 00:59:40

très bon code il marche nikel !! merci beaucoup !

Commentaire de wil82 le 20/06/2006 14:06:26

pour ma part je ne peut ajouter winsock parce qu'a chaque fois j'ai le meme message d'erreur: licence introuvable.
quelqu'un pourrait-il m'aidé?
j'utilise vba

Commentaire de frederios le 21/10/2006 06:25:20

Pour inserer un control winsock, super simple click de droite sur la barre a outils de vb(la ou tu choisie les controls a ajoute a tes forme ex.command button ou textbox), la tu dir ajouter un control ou add control en anglais(ou quelque chose qui ressemble a ca) la il y a une fenetre qui apparet avec un packet d'option, la tu cherche la rubrique "m" comme microsoft winsock tu choche la case a cote du microsoft winsock, tu click sur l'affirmative genre ok ou ajouter.

et la tu remarque que dans ta barre a outils il y a un nouvelle element qui est le controle winsock que tu ajoute a ta feuille.

Remarque: si tu avais jamais fais cette procedure, tu vas remarquer qu'il y a plein de control autre que le winsock. moi j'ai passer plein de nuit a les essayers tous et quelle plaisire que j'ai eu a tout les decouvrirent

bref j'espere que ca vous a aider

Commentaire de mp280272 le 27/08/2007 10:47:18

salut frederios,
j'ai fait se que indique mais je ne trouve pas le control je suis sous vb .net express 2005
c'est tu ou trouver ce controle pour le telecharger
merci de ton aide

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Envoyer un mail sans Winsock ni Outlook ! [ par Jonef ] Bonjour à tous !Voilà, en fait je souhaite faire un programme qui envois des e-mails, le problème c'est que Winsock ne marche pas donc pas possible d' Mail SMTP par WINSOCK [ par mcroteau ] J'ai présentement un problème. J'utilise Winsock pour envoyer des mails. Si j'envoie le mail par un serveur Exchange, la date d'envoie n'est pas la bo Envoyer simplement un mail avec winsock ! [ par Reelaxman ] Salut &#224; tous !J'ai trouver bon nombre de sources pour envoyer un mail avec Winsock, mais pas une seule qui ne fonctionne... A se tirer une balle comment envoyer des mail par winsock [ par dOsSpr0uTosS ] salut &#224; tous,je voudrais envoyer un mail par winsock donc je tape mailto:kurt_cobain_75@hotmail.com?Subject=test&amp;body=salutmais la il me dit Envoyer mail sans MAPI ni CDO [ par talking ] Bonjour tout le monde. Voil&#224; donc j'ai cherch&#233; sur tout le site, comment envoyer un mail avec Winsock, j'ai trouv&#233; des sources, mais le Envoi de Mail avec Winsock [ par Cjvg ] Bonjour à tous,Sous Microsoft XP et avec Visual Basic est ce que je peux:Question 1   Je souhaiterais savoir si avec Winsock je peux envoyer des mails Envoi Email [ par podzob56 ] Bonjour à tous!Je cherche à faire une macri qui reproduirait ceci:Ouverture "fichier.xls" puis"fichier"-&gt;"envoyer vers"-&gt; destinatairedonc norma recherche service web pour envoyer mail [ par djmic ] bonjour à tous,je suis à la recherche d'un service Web pour envoyer des mails. Est-ce que quelqu'un aurait un bon site qui propose des services web po Problème envoyer un mail via webmail [ par xounay ] Bonjour,Je cherche à envoyer un mail via webmail derriere serveur exchange.sachant qu'il y a une histoire de certificat+auth.Alors pour du smtp classi Envoi de mail en automatique Outlook/Exchange [ par BUZZ2K ] Bonjour,J'ai dev un logiciel sous Access. Je souhaiterais exporter des documents en PDF et les envoyer par mail.J'arrive a transformer mon etat en PDF


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 3,432 sec (4)

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