Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : problème Winsock et envoi d'email [ Archives Visual Basic / J'AI BESOIN D'AIDE !!!! :) ] (nazzguhl)

jeudi 28 juillet 2005 à 12:38:35 | problème Winsock et envoi d'email

nazzguhl

Bonjour,

J'ai trouvé dans divers messages du forum et bouts de code pour écrire un programme VB6 afin d'envoyer des emails avec WinSock, mais ça ne fonctionne pas très bien, si je lance la procédure email_Winsock (ci-joint), rien n'est envoyé au serveur de messagerie (même en mettant des pauses jusqu'à 30s entre chaque commande !), si je lance le prgramme en pas à pas toutes les commandes Winsock sont exécutée correctement et j'envoi de temps en temps un email que j'ai pu vérifier sur ma messagerie.
J'ai fait une trace des échanges quand ça fonctionne, j'ai l'impression que les réponses du serveur sont décalées !
Merci de m'aider et de m'expliquer ce qui ne marche pas, je n'ai pas trouvé de fonction d'attente de résolution d'un senddata de winsock, ou i l me manque des commandes de contrôle, de validation ou d'attente.

Merci d'avance
Alain

Programme VB6:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Sub email_winsock()

' les noms sont bidon pour la diffusion pour l'adresse du serveur SMTP, l'adresse emmétrice et l'adresse destinataire

    ' Initialisation
    ' Connection au serveur sur le port 25
    Winsock1.RemoteHost = "smtp.fr.serveurmail.com"     Winsock1.RemotePort = 25
    Winsock1.Close
    Winsock1.Connect
    ' Verifie si la connection est effectué
attente:
    DoEvents
    Refresh
    If Winsock1.State <> 7 Then GoTo attente ' attente de validation de la connection
    Call AttCmd("220") ' attente réponse code 220 du serveur SMTP
    serveur = Mid(DataStr, 5, InStr(DataStr, "SMTP") - 7)
    Winsock1.SendData "EHLO " & serveur & vbCrLf
    DoEvents
    'Call AttRCV 'suppression de l'attente de réponse du serveur sinon rien ne se passe
    ' Source Mail
    Winsock1.SendData "MAIL FROM:" & "<
emmeteur@serveur2.fr>" & vbCrLf
    DoEvents
    Call AttRCV 'attente de réponse du serveur
    ' Destinataire Email
    Winsock1.SendData "RCPT TO:" & "<
destinataire@serveur.fr>" & vbCrLf
    DoEvents
    Call AttRCV 'attente de réponse du serveur
    ' Fichier à envoyer
    Winsock1.SendData "DATA" & vbCrLf & "" ' pas de pièce jointe
    DoEvents
    ' Sujet du message
    Winsock1.SendData "Subject:" & Chr(32) & "Test d'email par WinSock" & vbCrLf
    DoEvents
    Call AttRCV 'attente de réponse du serveur
    ' corps du message
    Winsock1.SendData "BONJOUR," & vbCrLf
    DoEvents
    Winsock1.SendData vbCrLf
    DoEvents
    Winsock1.SendData vbCrLf
    DoEvents
    Winsock1.SendData "Test d'envoi d'email automatique sans outlook" & vbCrLf
    DoEvents
    Winsock1.SendData vbCrLf
    DoEvents
    Winsock1.SendData vbCrLf
    DoEvents
    Winsock1.SendData "ACT" & vbCrLf
    DoEvents
    Winsock1.SendData "." & vbCrLf  ' fin du corps du message
    DoEvents
    ' Quitte le protocole
    Winsock1.SendData "QUIT" & vbCrLf
    DoEvents
    Winsock1.Close
    ' Message Envoyé
    MsgBox "Message et Fichier Posté !!", vbExclamation, "Bravo !!"
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Open "D:\SourceVb\email_winsock\reponse.txt" For Append As #1
    'MsgBox "il y a des data à reevoir : " + Format(bytesTotal, "0")
    Winsock1.GetData DataStr, vbString, bytesTotal
    'MsgBox DataStr
    Print #1, DataStr
    Close #1
    f_dataRCV = True
End Sub


Public Sub AttCmd(cod As String)
    f_dataRCV = False
attente:
    If Left(DataStr, 3) <> cod Then
        pause (1)
        GoTo attente
    End If
End Sub


Public Sub pause(seconde As Long)
        Sleep (seconde * 1000)
End Sub

Trace de l'exécution correct en pas à pas
(en rouge les commandes envoyées via VB & WinSock) :

    Winsock1.RemoteHost = "smtp.fr.serveurmail.com"     
    Winsock1.RemotePort = 25
    Winsock1.Close
    Winsock1.Connect
220 smtp9.clb.oleane.net ESMTP France-Telecom Oleane; Thu, 21 Jul 2005 17:24:34 +0200

    Winsock1.SendData "EHLO " & serveur & vbCrLf
    Winsock1.SendData "MAIL FROM:" & "<
emmeteur@serveur2.fr>" & vbCrLf
250-smtp9.clb.oleane.net Hello [81.80.189.94], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE 21000000
250-DSN
250-AUTH PLAIN LOGIN
250-DELIVERBY
250 HELP

    Winsock1.SendData "RCPT TO:" & "<destinataire@serveur.fr>" & vbCrLf
 250 2.1.0 <emmeteur@serveur2.fr>... Sender ok

    Winsock1.SendData "DATA" & vbCrLf & "" ' pas de pièce jointe
250 2.1.5 <destinataire@serveur.fr>... Recipient ok

    Winsock1.SendData "Subject:" & Chr(32) & "Test d'email par WinSock" & vbCrLf
354 Enter mail, end with "." on a line by itself

    Winsock1.SendData "BONJOUR," & vbCrLf
    Winsock1.SendData vbCrLf
    Winsock1.SendData vbCrLf
    Winsock1.SendData "Test d'envoi d'email automatique sans outlook" & vbCrLf
    Winsock1.SendData vbCrLf
    Winsock1.SendData vbCrLf
    Winsock1.SendData "ACT" & vbCrLf
    Winsock1.SendData "." & vbCrLf  ' fin du corps du message
    Winsock1.SendData "QUIT" & vbCrLf
250 2.0.0 j6LFOYH7012801 Message accepted for delivery


ACT




Cette discussion est classé dans : serveur, vbcrlf, senddata, winsock1, doevents


Répondre à ce message

Sujets en rapport avec ce message

Envoyer un mail avec WINSock ?????? [ par alex74 ] J'ai lu le forum que l'on pouvait envoyer des mails avec WInsock, mais ca ne marche pas!voici mon code :Private Sub Winsock1_Connect()Winsock1.SendDat Problème [ par schub1015 ] Voici mon code : Private Sub Command1_Click() Winsock1.Connect "pop.yahoo.fr", 110 Winsock1.SendData "USER xxxx" & vbCrLf Winsock1.SendData " pb de connexion à un serveur pop [ par schub1015 ] Est-ce qu'un code comme celui-ci peut fonctionner ?Private Sub Command1_Click()stade = 0Winsock1.CloseWinsock1.Connect Text4.Text, 110End SubPrivate S envoyer un mail [ par HatMan ] voila jai pri un code pour envoyer un mail et cela donne sa:Private Sub Command1_Click()Winsock1.Connect "smtp.free.fr", 25End SubPrivate Sub Wi Mail et Winsock [ par CorbenD2 ] Bonjour à tous je voudrais envoyer des mails généré par ma base de données , je voudrais les mettre en forme avec un peu d html et pouvoir surtout spé PB Envoi de mails en TCP avec winsock... [ par ceyquem ] Bonjour !Je ne parviens pas à envoyer de mails avec winsowk et le code suivant que j'ai repiqué d'un exemple de vb5 :********************************* Winsock client avec socket serveur Unix [ par Veloce ] J'ai un formulaire sous VB où il y a une zone de texte "txtMessage" et un bouton "command1"je veux envoyer le contenu de la zone de texte à un socket pb winsock senddata [ par gini333 ] Voilà mon problème, une fois que le programme a reçu toutes les données de la 1ère requête (lettre "A"), le nextsend passe bien à true, il sort du dat Winsock -code bidon,pk sa marche pas ?? [ par nashoy ] salut,jai un ptit code tout bidon,et jaimerai savoir coment je pe/si je pe y ajouter un nom de destinataire et de l'envoyeur, pas ladresse, le nom,et Comment faire un mail Winsock ??? [ par EhJoe ] Bonjour, J'ai écrit (recopié), sans y comprendre grand chose, le code sous-cité, si quelqu'un peut me dire où est l'erreur pour que ça marche (je suis


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,156 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.