Page 1 sur 2

smtp???????

Publié : dim. 17/juin/2007 14:41
par Fortix
Bonjours à tous,
j'ais récuperer quelques exemples de "PureSMTP"de Mister gnozal, que je saluts d'ailleur!, mais ça ne fonctionne pas du tout et pourtant je possède la version 4 de PB!!!!,, je commence à croire qu'envoyer un mail avec VBS "CDO.Message"c'est plus simple , alors si vous possédez des exemples qui fonctionnent, je serais ravis d'en prendre connaissance !!,merci à vous

Publié : dim. 17/juin/2007 14:54
par brossden
Un bout de code STP !

Re: smtp???????

Publié : lun. 18/juin/2007 12:44
par gnozal
Fortix a écrit :Bonjours à tous,
j'ais récuperer quelques exemples de "PureSMTP"de Mister gnozal, que je saluts d'ailleur!, mais ça ne fonctionne pas du tout et pourtant je possède la version 4 de PB!!!!,, je commence à croire qu'envoyer un mail avec VBS "CDO.Message"c'est plus simple , alors si vous possédez des exemples qui fonctionnent, je serais ravis d'en prendre connaissance !!,merci à vous
Les exemples sont fournis avec la lib ...
Remarque : il y a une lib pour PB3.94 et une lib pour PB4.0x (elles sont incompatibles).
Un exemple de code (de %pb%\Examples\PureSMTP ...) :

Code : Tout sélectionner

;
; PureSMTP library test file AUTHENTICATION
;
MySMTPServer.s = "MySMTPServer"
MySMTPPort.l = 25
If PureSMTP_OpenSMTPConnection(MySMTPServer, MySMTPPort) = #PureSMTP_Ok
  Debug PureSMTP_GetLastServerMessage()
  MailTo.s = "MyName@MyServer"
  MailFrom.s = "PureSMTP@testing"
  Subject.s = "Test (with login authentication)"
  MsgBody.s = "Testing PureSMTP"
  Attachments.s = ""
  UserName.s = "TEST"
  Password.s = "TEST"
  ; sending mail
  Status.l = PureSMTP_SendMail(MailTo, MailFrom, Subject, MsgBody, Attachments, UserName, Password)
  If Status = #PureSMTP_Ok
    Debug "Message : sent"
    Debug "Status = " + Str(Status)
  Else
    Debug "Message : something went wrong !"
    Debug "Status = " + Str(Status)
    Debug PureSMTP_GetLastServerMessage()
  EndIf
  PureSMTP_CloseSMTPConnection()
Else
  Debug "OpenSMTPConnection failed"
  Debug PureSMTP_GetLastServerMessage()
EndIf
Remarque 2 : "ça ne fonctionne pas du tout" sans aucun code n'est pas très informatif !

Publié : jeu. 28/juin/2007 16:30
par Fortix
En fait je me suis mal exprimé, ce que je voulais dir plutôt: la fonction fonctionne correctement mais lors de l'envoit il y a un bloquage au niveau du serveur (quelques soit le serveur smtp ciblé !), je m'excuse gnozal !, et
de mon côté je prendrais des cours pour apprendre à m'exprimer, c'est promis juré!!

Publié : jeu. 28/juin/2007 20:00
par Anonyme
un truc tout bête , essaye de mettre dans "mailfrom" un email valide
comme par exemple "bob.leponge@wanadoo.fr"

@++

Publié : mar. 10/juil./2007 13:25
par Fortix
Mais doit on obligatoirement indiquer un serveur smtp??, parce que j'ai remarqué que certain compte n'en avaient pas :!:

Publié : mar. 10/juil./2007 14:37
par gnozal
Fortix a écrit :Mais doit on obligatoirement indiquer un serveur smtp??,
pour envoyer un mail, oui : le protocole SMTP fonctionne grâce à des commandes textuelles envoyées au serveur SMTP.
http://www.commentcamarche.net/internet/smtp.php3

Publié : sam. 14/juil./2007 13:00
par Fortix
Merci gnoz@l :D

Publié : mar. 17/juil./2007 18:53
par Fortix
Salut Gnozal et les autres j'ais parfaitement bien compris le fonctionnement d'un serveur smtp mais je n'arrive pas à déceler l'erreur qui se trouve dans mon code qui est encore au stade expérimental:


Code : Tout sélectionner


Enumeration
    #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
    #_String_SMTP
    #_String_Expediteur
    #_String_Destinataire
    #_String_Objet
    #_Text_0
    #_Text_1
    #_Text_2
    #_Text_3
    #_Text_4
    #_Editor_0
    #_Piece_Jointe
    #_Envoyer
EndEnumeration

SMTP_Port       =25
; utilisateur_$   ="anonyme"
; pass_$          ="anonyme"

Procedure Open_Window_0()
    If OpenWindow(#Window_0, 385, 116, 380, 443, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar )
        If CreateGadgetList(WindowID(#Window_0))
            TextGadget(#_Text_0, 5, 10, 45, 20, "SMTP")
                StringGadget(#_String_SMTP, 55, 5, 145, 25, "smtp.caramail.com")
                
            TextGadget(#_Text_1, 5, 70, 370, 25, "Expediteur", #PB_Text_Center)
                StringGadget(#_String_Expediteur, 110, 100, 165, 25, "artnax@yahoo.fr")
                
            TextGadget(#_Text_2, 5, 140, 370, 25, "Destinataire", #PB_Text_Center)
                StringGadget(#_String_Destinataire, 110, 170, 165, 25, "vunder@caramail.com")
            
            TextGadget(#_Text_3, 5, 210, 370, 25, "Objet", #PB_Text_Center)
                StringGadget(#_String_Objet, 110, 240, 165, 25, "1er Test00")
                
            TextGadget(#_Text_4, 5, 280, 370, 25, "Message", #PB_Text_Center)
            
            EditorGadget(#_Editor_0, 5, 310, 325, 100)
      
            
            ButtonGadget(#_Piece_Jointe, 335, 310, 40, 25, "PJ")
            ButtonGadget(#_Envoyer, 235, 415, 95, 25, "Envoyer")      
        EndIf
    EndIf
EndProcedure

Open_Window_0()

Repeat

EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_Gadget

        Select EventGadget()
        
            Case #_Piece_Jointe
            
                PJ_$ = OpenFileRequester("Recherche Fichier",PJ_$, "Tous les fichiers (*.*)|*.*",0)
                
            Case #_Envoyer
            
                SMTP_Serveur_$      = GetGadgetText(#_String_SMTP)
                
                If PureSMTP_OpenSMTPConnection(SMTP_Serveur_$ , SMTP_Port) = #PureSMTP_Ok
                    MessageRequester("Info",PureSMTP_GetLastServerMessage())
    
    
                    Mail_Expediteur_$   = GetGadgetText(#_String_Expediteur)
                    Mail_Destinataire_$ = GetGadgetText(#_String_Destinataire)
                    Objet_$             = GetGadgetText(#_String_Objet)
                    Message_$           = GetGadgetText(#_Editor_0)
               

                    ;Status = PureSMTP_SendMail(Mail_Destinataire_$, Mail_Expediteur_$, Objet_$, Message_$,"",utilisateur_$,pass_$)
                    Status = PureSMTP_SendMail(Mail_Destinataire_$, Mail_Expediteur_$, Objet_$, Message_$, PJ_$)
                    
                    ;Debug PureSMTP_SetXMailer("Mr X") 
                    
                    If Status = #PureSMTP_Ok
                        MessageRequester("Info","Message : send ;"+Chr(13)+"Status = " + Str(Status))
                    Else
                        MessageRequester("Info","Message : Erreur !;"+Chr(13)+"Status = " + Str(Status)+" ;"+Chr(13)+PureSMTP_GetLastServerMessage())
                    EndIf
                    PureSMTP_CloseSMTPConnection()
                Else
                    MessageRequester("Info","OpenSMTPConnection failed ;"+Chr(13)+PureSMTP_GetLastServerMessage())
                EndIf
        EndSelect
    EndIf

Until EventID = #PB_Event_CloseWindow

If PureSMTP_CloseSMTPConnection()
    MessageRequester("Info","Connection fermée !")
    CloseWindow(#Window_0)
    End
EndIf

si vous pouvez trouver l'erreur alors n'hésiter pas à rectifier ce dernier
ainsi je pourrais passer à autre chose :wink:

soit c'est une erreur de format de texte, soit c'est une erreur causé par une pièce jointe!!!!, merci à tous :D

Publié : mer. 18/juil./2007 8:35
par gnozal
Je ne vois pas d'erreur dans ce code (à part l'appel en double de PureSMTP_CloseSMTPConnection() mais ce n'est pas génant).

Si çà ne marche pas, à quel stade (PureSMTP_OpenSMTPConnection() ou PureSMTP_SendMail()) l'erreur a-t-elle lieu et quel est la valeur de PureSMTP_GetLastServerMessage() ?

S'il n'y a pas d'erreur signalée, quel est le problème ?
Si le message ne passe pas, il est peut-être arrêté par un filtre spam ?

Publié : mer. 18/juil./2007 11:49
par Fortix
Ba quant je m'auto envoit des emails pour effectuer des tests je ne reçois
absolument rien quelques soit le compte

et pourtant GetlastServerMessage m'indique statut=1 donc à priori il ne devrait y avoir de problème :? ,

et en ce qui concerne MSN tu as bien raison, il y a effectivement un filtre spam, à propos,y aurait il une solution pour contourner ce filtre?,

j'ais penser qu'il fallait tous simplement masquer l'expediteur puisque même en indiquant un expediteur valide c'est concideré comme un spam,(c'est domage car ce n'est pas du tous mon intention!!) ?

Merci Mr Gnozal :D

Publié : mer. 18/juil./2007 12:51
par gnozal
Fortix a écrit :Ba quant je m'auto envoit des emails pour effectuer des tests je ne reçois absolument rien quelques soit le compte
Ton code fonctionne chez moi (avec d'autres adresses serveur/mail), donc je dirais c'est un problème de serveur.
Certains serveurs comme gmail.com utilisent le SSL : ceci n'est pas supporté par PureSMTP.
Ou alors les serveurs SMTP de Caramail sont anti-relay, c'est à dire qu'ils n'acceptent de relayer des courriers que depuis des serveurs bien définis (les leurs, utilisés par leur webmail) ?
Fortix a écrit :et pourtant GetlastServerMessage m'indique statut=1 donc à priori il ne devrait y avoir de problème :?
PureSMTP_GetLastServerMessage() retourne une chaîne, pas un chiffre.
Fortix a écrit :et en ce qui concerne MSN tu as bien raison, il y a effectivement un filtre spam, à propos,y aurait il une solution pour contourner ce filtre?,
Les filtres spam vérifient énormément de choses en plus de l'expéditeur comme certaines caractéristiques du message : X-Mailer et autres lignes de l'en-tête du message.
Enfin, certains filtres éliminent les serveurs SMTP publics.

Publié : mer. 18/juil./2007 18:31
par Fortix
Pour le cas de MSN j'ais récuperé le text exacte en résultat de GetlastserverMessage:

Code : Tout sélectionner

220 bay0-mc12-f21.bay0.hotmail.com Sending unsolicited commercial or bulk e-mail to Microsoft's computer network is prohibited. Other restrictions are found at http://privacy.msn.com/Anti-spam/. Violations will result in use of equipment located in California and other states. Wed, 18 Jul 2007 10:24:11 -0700 
mais j'ai parfaitement saisi tes explications je tenais juste à te montrer
le fameux message "plutôt étrange d'ailleur!!!!" en fait je ne suis pas très fort en Anglais, je suis plus Italien :oops:

Publié : mer. 18/juil./2007 18:38
par Ollivier
Que du bonheur ce message. Le problème c'est qu'il n'y a d'adresse e-mail pour répondre
Euh exuse nous serveur. Nous yen a pas méchant. Bonne bourre serveur

Publié : mer. 18/juil./2007 19:24
par Fortix
Explique toi Ollivier :?: :?: :?: :?: