Winsock et mail

cs_whiteknight Messages postés 19 Date d'inscription lundi 25 novembre 2002 Statut Membre Dernière intervention 11 septembre 2005 - 22 déc. 2003 à 06:35
Cibras Messages postés 2 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 8 août 2005 - 8 août 2005 à 08:21
slt

j'ai un pbs avec winsock ... si kk'un peu m'aider à debugger ... bon voila mon cas ! j'ai 2 fonction mail : 1 par mapi qui marche nickel et 1 par winsock qui laggue à mort de chez mort ...

donc le composant ce connecte (msgbox passe) par contre au "HELO" & serveur ca plante ! --> me juste erreur de connection ou de protocole ... et ca commence à me gaver j'ai presque fait mon prg durant la nuit c'est le seul truc qui bloque ... donc si kk'un pouvait me dire ou ca bloque ....

Merci d'avance :-)

voila mon code (enfin juste le module sur les mails)

Option Explicit
Public serveur As String ' Nom du serveur smtp

Public Sub email_mapi()
' Envoie un email en utilisatn le protocole MApi
On Error GoTo Erreur1:
Form5.MM.SessionID = Form5.MM.SessionID
' Option de l'objet Session Mapi
With Form5.MS
'Si le E-Mail doit etre télécharger
.DownLoadMail = False
'Si une boite de dialogue est fourni
.LogonUI = False
.NewSession = True
.SignOn
Form5.MM.SessionID = .SessionID
End With
' Composition du message
Form5.MM.Compose
' Piece Joint
Form5.MM.AttachmentType = 0 ' Fichier de donnée
Form5.MM.AttachmentPathName = Form5.txt_PJ.Text ' Chemin PJ
' Email Destination
Form5.MM.RecipAddress = Form5.txt_dest.Text
' Nom/Nickname de la source
Form5.MM.RecipDisplayName = Form5.txt_dest.Text
' Corps du message
Form5.MM.MsgNoteText = Form5.txt_mess.Text
' Objet du message
Form5.MM.MsgSubject = Form5.txt_objet.Text
' Type de message
Form5.MM.MsgType = "Content-Type: Text/Plain" & "Content -Transfer - Encoding:"
' Envoie le message
Form5.MM.Send False
' Ferme la session
Form5.MS.SignOff

' Affiche le message d'erreur retournée
Erreur1:
If Err.Number <> 0 Then
MsgBox "" & Err.Description & "", vbCritical, "Erreur"
End If
End Sub

Public Sub email_winsock()
' Variable Locale
Dim dest As String
Dim Source As String
Dim sujet As String
Dim msg As String
Dim xma As String
Dim nom_f
' Initialisation
dest = Form5.txt_dest.Text
Source = Form5.txt_mail_S.Text
sujet = Form5.txt_objet.Text
msg = Form5.txt_mess.Text
nom_f = Form5.txt_PJ.Text
xma = "The 1st Word Clone Mail Fonction v " & App.Major & "." & App.Minor & "." & App.Revision
' Connection au serveur sur le port 25
Form5.Winsock1.RemoteHost = serveur
Form5.Winsock1.RemotePort = 25
Form5.Winsock1.Close
Form5.Winsock1.Connect
' Protocole d'appel Winsock
' par default sur le port 25
' Verifie si la connection est effectué
'If Form5.Winsock1.State = True Then
MsgBox "connecté"
Form5.Winsock1.SendData "HELO " & serveur & vbCrLf
' Source Mail
Form5.Winsock1.SendData "MAIL FROM:" & "<" & Source & ">" & vbCrLf
' Destinataire Email
Form5.Winsock1.SendData "RCPT TO:" & "<" & dest & ">" & vbCrLf
' Fichier à envoyer
Form5.Winsock1.SendData "DATA" & vbCrLf & nom_f
' X-Mailer
Form5.Winsock1.SendData "X-Mailer:" & Chr(32) & xma & vbCrLf
' Sujet du message
Form5.Winsock1.SendData "Subject:" & Chr(32) & sujet & vbCrLf
' Defini le type de email sur Text/Html
Form5.Winsock1.SendData "MIME-Version: 1.0" & vbCrLf & "Content-Type: multipart/mixed; "
Form5.Winsock1.SendData "" & msg & vbCrLf
Form5.Winsock1.SendData "." & vbCrLf
' Quitte le protocole
Form5.Winsock1.SendData "QUIT"
Form5.Winsock1.Close
' Message Envoyé
MsgBox "Message et Fichier Posté !!", vbExclamation, "Bravo !!"
' Decharge La fiche
Unload Form5
'Else
' MsgBox "Erreur de Socket", vbInformation
'End If
End Sub

Whiteknight ... a B/X Shipper !

3 réponses

cs_Megafan Messages postés 389 Date d'inscription dimanche 7 avril 2002 Statut Membre Dernière intervention 23 septembre 2016 2
22 déc. 2003 à 10:16
Salut,
A prioris je vois pas d'erreur dans dans protocole SMTP, a part peut être un espace apres les : sur les commandes MAIL FROM et RCPT TO.
Par contre je ne vois pas dans ton code le traitement du data_arrival...
Cela veut t'il dire que tu ne traites pas les réponses du serveur ?
Si c'est le cas à mon avis c'est la d'ou viens le probléme.
Créer au moins une procedure winsock1_DataArrival et surtout entre tes Winsock1.sendata, mets des doevents pour que les paquets soient envoyés sur le port.

Salut.
0
cs_whiteknight Messages postés 19 Date d'inscription lundi 25 novembre 2002 Statut Membre Dernière intervention 11 septembre 2005
22 déc. 2003 à 11:56
Merci je vais essayer de le faire marcher

++

Whiteknight ... a B/X Shipper !
0
Cibras Messages postés 2 Date d'inscription jeudi 23 novembre 2000 Statut Membre Dernière intervention 8 août 2005
8 août 2005 à 08:21
Faut que tu rajoute une ligne de commande pour definir la proprieté LocalPort dans ton cas ca doit etre 0
Form1.Winsock1.LocalPort = 0
Aussitot apres T'etre connécté verifie que tu l'est bien par la commande qui suit
Form1.Winsock1.Connect
' Verifie si la connection est effectué
attente:
DoEvents
Refresh
If Form1.Winsock1.State <> 7 Then GoTo attente ' attente de validation de la connection
DoEvents
Bon courage et n'hesite pas a deposer ton code sur ce site pour ceux qui ont des dificulté ca peut aider
0
Rejoignez-nous