Winsock

kam74 Messages postés 13 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 11 février 2008 - 8 févr. 2008 à 15:36
kam74 Messages postés 13 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 11 février 2008 - 11 févr. 2008 à 16:07
Bonjour à tous,

Voici mon probleme: J'utilise winsock pour envoyer des mails via une interface developpée en VB6, cela marche quand j'utilise certains des serveurs mail, mais il y a un des serveurs avec lequel je rencontre des problemes.
La premiere question est de savoir comment tracer chaque etape du processus winsock .
La deuxieme question est de savoir comment recuperer le type d'erreur que je rencontre.

Il faut savoir que j'utilise des serveurs EXCHANGE pour envoyer mes mails et que les serveurs sont eparpaillés dans differents pays.

Exemple : j'utilise 3 serveurs qui se trouvent tous 3 à londres. Pour 2 d'entre cela marche tres bien mais pour le 3 eme j'ai un probleme.

Ma 3eme et derniere question : Quelqu'un saurait il d'ou peu venir le probleme.

voici la fonction que j'utilise pour en envoyer le Mail (On sait tous ici qu'il s'agit d'un envoie en SMTP) :

Sub SendEmail(MailServerName As String, FromName As String, FromEmailAddress As String, ToName As String, ToEmailAddress As String, EmailSubject As String, EmailBodyOfMessage As String)


Dim DateNow As String
Dim first As String, Second As String, Third As String
Dim Fourth As String, Fifth As String, Sixth As String
Dim Seventh As String


With Winsock1
        .Close
       
    If .State = sckClosed Then ' Check to see if socket is closed
        DateNow = Format(Date, "Ddd") & ", " & Format(Date, "dd Mmm YYYY") & " " & Format(Time, "hh:mm:ss") & "" & " -0600"
        first = "mail from: " & FromEmailAddress & vbCrLf ' Get who's sending E-Mail address
        Second = "rcpt to: " & ToEmailAddress & vbCrLf ' Get who mail is going to
        'Third = "Date: " & DateNow & vbCrLf ' Date when being sent
        Fourth = "From: """ & FromName & """ <" & FromEmailAddress & ">" + vbCrLf ' Who's Sending
        Fifth = "To: " & ToName & vbCrLf ' Who it going to
        Sixth = "Subject: " & EmailSubject & vbCrLf ' Subject of E-Mail
        Seventh = EmailBodyOfMessage & vbCrLf ' E-mail message body
        Ninth = "X-Mailer: Monster HelpDesk" & vbCrLf ' What program sent the e-mail, customize this
        .LocalPort = 0 ' Must set local port to 0 (Zero) or you can only send 1 e-mail per program start
        .Protocol = sckTCPProtocol ' Set protocol for sending
        .RemoteHost = MailServerName ' Set the server address
        .RemotePort = 25 ' Set the SMTP Port
        .Connect ' Start connection
        WaitFor ("220")
        statustxt.Caption = "Connecting...."
        .SendData ("HELO EnterComputerNameHere" & vbCrLf)
        WaitFor ("250")
        statustxt.Caption = "Connected"


        .SendData (first)
        statustxt.Caption = "Sending Message"


        WaitFor ("250")
        .SendData (Second)
        WaitFor ("250")
        .SendData ("data" & vbCrLf)
        WaitFor ("354")
        .SendData (Fourth & Third & Ninth & Fifth & Sixth & vbCrLf)
        .SendData (Seventh & vbCrLf)
        .SendData ("." & vbCrLf)
        WaitFor ("250")
        .SendData ("quit" & vbCrLf)
        statustxt.Caption = "Disconnecting"


        WaitFor ("221")
        .Close
    Else
        MsgBox (str(.State))
    End If
End With
End Sub



Votre aide me serai tres precieuse.

Par avance merci.

CL

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 févr. 2008 à 01:20
Salut
"ça marche pas" ne veut rien dire.
Dis nous quelle est la réaction de ton programme.
Est-ce qu'il se plante ?
Est-ce qu'il se bloque / fige ?
Je vois qu'il y a une StatusBar qui affiche ce qui se passe.
Quand ça ne marche pas, s'arrête t-elle en plein milieu ? quelle étape ?

Si le programme s'arrête en plein milieu des étapes, c'est qu'il ne reçoit pas le bon code de retour lors des appels d'attente WaitFor("xxx").
Qu'y a t-il dans cette Sub ?
Que reçoit-il ?
Que se passe t-il s'il reçoit un autre code réponse que celui escompté ?
Pour ce qui est de la trace, c'est à cette Sub WaitFor qu'il faut demander d'afficher dans la fenêtre de debug, par exemple, les données reçues, afin de débuguer.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
kam74 Messages postés 13 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 11 février 2008
11 févr. 2008 à 10:54
Salut Jack,


tout d'abord merci pour ta reponse.
en fait la connexion s'etablie, mais la reponse est la ssuivante :
"client have no permission to submit this email".
Je vais voir coté serveur.
Je te tiens au courant.
merci à toi.

kam


 


 






CL
0
kam74 Messages postés 13 Date d'inscription jeudi 20 mars 2003 Statut Membre Dernière intervention 11 février 2008
11 févr. 2008 à 16:07
Salut ,

En fait selon l'admin Exchange il manquerai l'authentification.
Cela dit j'aurai besoin de connaitre la synthaxe d'authentification acev winsock.
Je suis partie voir la rfc, mais elle est tres peu clair.

Merci de votre aie.

kam
CL
0
Rejoignez-nous