J'ai une appli avec laquelle on envoie des emails en utilisant la fonction
EmailOuvreSessionSMTP.
Pas de problème mais ce sont les utilisateurs qui rentrent leur smtp, et si
il y a une erreur sur le smtp , le programme reste bloqué .
Comment connaitre la validité du smtp
SI EmailOuvreSessionSMTP(user,smtpmail)= Vrai ALORS
// on gere l'envoie du mail
SINON
Erreur("Impossible d'établir la connexion"+ RC+...)
EmailMsgErreur(email.Erreur))
FIN
si le smtp est faux , je ne passe jamais à l'erreur !!! , je reste bloqué
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
QUINCY Bernard avait soumis l'idée :
J'ai une appli avec laquelle on envoie des emails en utilisant la fonction EmailOuvreSessionSMTP. Pas de problème mais ce sont les utilisateurs qui rentrent leur smtp, et si il y a une erreur sur le smtp , le programme reste bloqué . Comment connaitre la validité du smtp
Hum, normalement le timeout est fixé à 10 secondes, donc emailouvresessionsmtp doit rendre la main après cette durée (qui peut être fixée avec emailchangetimeout).
Pour connaitre la validité d'un serveur (pas forcément de mail), tu peux soit résoudre l'adresse (netadresseip) ou soit tester sa réponse (ping). Le mieux reste de faire une résolution MX du domaine pour connaitre le nom exact du serveur de mail. (wanadoo.fr => smtp.wanadoo.fr)
DNS_MX_DATA est une structure pNameExchange est un entier sur 4 octets wPreference est un entier sur 2 octets Pad est un entier sur 2 octets FIN
dnsrecord est une structure pNext est un entier sur 4 octets pName est un entier sur 4 octets wType est un entier sur 2 octets wDataLength est un entier sur 2 octets DW est un entier sur 4 octets dwTtl est un entier sur 4 octets dwReserved est un entier sur 4 octets data est un DNS_MX_DATA FIN dr est un dnsrecord
res est un entier = API("Dnsapi","DnsQuery_A", "tondomaine.xxx" , 15 , 0 , Null , &dr , Null ) SI PAS res ALORS ch est une chaîne ASCIIZ de 128 BOUCLE API("kernel32","RtlMoveMemory", &dr, dr:pNext, Dimension(dr)) SI API("kernel32","lstrlenA",dr:data:pNameExchange)=0 ALORS SORTIR API("kernel32" , "RtlMoveMemory" , &ch , dr:data:pNameExchange , API("kernel32" , "lstrlenA" , dr:data:pNameExchange)) Trace("ch : ",ch," pref : ",dr:data:wPreference) ch="" FIN FIN
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
QUINCY Bernard avait soumis l'idée :
J'ai une appli avec laquelle on envoie des emails en utilisant la fonction
EmailOuvreSessionSMTP.
Pas de problème mais ce sont les utilisateurs qui rentrent leur smtp, et si
il y a une erreur sur le smtp , le programme reste bloqué .
Comment connaitre la validité du smtp
Hum, normalement le timeout est fixé à 10 secondes, donc
emailouvresessionsmtp doit rendre la main après cette durée (qui peut
être fixée avec emailchangetimeout).
Pour connaitre la validité d'un serveur (pas forcément de mail), tu
peux soit résoudre l'adresse (netadresseip) ou soit tester sa réponse
(ping).
Le mieux reste de faire une résolution MX du domaine pour connaitre le
nom exact du serveur de mail. (wanadoo.fr => smtp.wanadoo.fr)
DNS_MX_DATA est une structure
pNameExchange est un entier sur 4 octets
wPreference est un entier sur 2 octets
Pad est un entier sur 2 octets
FIN
dnsrecord est une structure
pNext est un entier sur 4 octets
pName est un entier sur 4 octets
wType est un entier sur 2 octets
wDataLength est un entier sur 2 octets
DW est un entier sur 4 octets
dwTtl est un entier sur 4 octets
dwReserved est un entier sur 4 octets
data est un DNS_MX_DATA
FIN
dr est un dnsrecord
res est un entier = API("Dnsapi","DnsQuery_A", "tondomaine.xxx" , 15 ,
0 , Null , &dr , Null )
SI PAS res ALORS
ch est une chaîne ASCIIZ de 128
BOUCLE
API("kernel32","RtlMoveMemory", &dr, dr:pNext, Dimension(dr))
SI API("kernel32","lstrlenA",dr:data:pNameExchange)=0 ALORS SORTIR
API("kernel32" , "RtlMoveMemory" , &ch , dr:data:pNameExchange ,
API("kernel32" , "lstrlenA" , dr:data:pNameExchange))
Trace("ch : ",ch," pref : ",dr:data:wPreference)
ch=""
FIN
FIN
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
J'ai une appli avec laquelle on envoie des emails en utilisant la fonction EmailOuvreSessionSMTP. Pas de problème mais ce sont les utilisateurs qui rentrent leur smtp, et si il y a une erreur sur le smtp , le programme reste bloqué . Comment connaitre la validité du smtp
Hum, normalement le timeout est fixé à 10 secondes, donc emailouvresessionsmtp doit rendre la main après cette durée (qui peut être fixée avec emailchangetimeout).
Pour connaitre la validité d'un serveur (pas forcément de mail), tu peux soit résoudre l'adresse (netadresseip) ou soit tester sa réponse (ping). Le mieux reste de faire une résolution MX du domaine pour connaitre le nom exact du serveur de mail. (wanadoo.fr => smtp.wanadoo.fr)
DNS_MX_DATA est une structure pNameExchange est un entier sur 4 octets wPreference est un entier sur 2 octets Pad est un entier sur 2 octets FIN
dnsrecord est une structure pNext est un entier sur 4 octets pName est un entier sur 4 octets wType est un entier sur 2 octets wDataLength est un entier sur 2 octets DW est un entier sur 4 octets dwTtl est un entier sur 4 octets dwReserved est un entier sur 4 octets data est un DNS_MX_DATA FIN dr est un dnsrecord
res est un entier = API("Dnsapi","DnsQuery_A", "tondomaine.xxx" , 15 , 0 , Null , &dr , Null ) SI PAS res ALORS ch est une chaîne ASCIIZ de 128 BOUCLE API("kernel32","RtlMoveMemory", &dr, dr:pNext, Dimension(dr)) SI API("kernel32","lstrlenA",dr:data:pNameExchange)=0 ALORS SORTIR API("kernel32" , "RtlMoveMemory" , &ch , dr:data:pNameExchange , API("kernel32" , "lstrlenA" , dr:data:pNameExchange)) Trace("ch : ",ch," pref : ",dr:data:wPreference) ch="" FIN FIN
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
QUINCY Bernard
Je viens de vérifier , normalement le timeout est par défaut de 10s . Si je met EmailChangeTimeOut(10), la je sors bien au bout de 10s sinon je reste planté !!! donc le timeout par défaut ne fonctionne pas ....
A+ Merci de vos réponses
Je viens de vérifier , normalement le timeout est par défaut de 10s .
Si je met EmailChangeTimeOut(10), la je sors bien au bout de 10s sinon je
reste planté !!!
donc le timeout par défaut ne fonctionne pas ....
Je viens de vérifier , normalement le timeout est par défaut de 10s . Si je met EmailChangeTimeOut(10), la je sors bien au bout de 10s sinon je reste planté !!! donc le timeout par défaut ne fonctionne pas ....
A+ Merci de vos réponses
:-\)
Un SocketConnecte sur le port 25 du serveur smtp permettrait de savoir il est accessible.
"QUINCY Bernard" a écrit dans le message de news: 41876682$0$5916$
Je viens de vérifier , normalement le timeout est par défaut de 10s . Si je met EmailChangeTimeOut(10), la je sors bien au bout de 10s sinon je reste planté !!! donc le timeout par défaut ne fonctionne pas ....
A+ Merci de vos réponses
Un SocketConnecte sur le port 25 du serveur smtp permettrait de savoir il
est accessible.
"QUINCY Bernard" <b.quincy@free.fr> a écrit dans le message de news:
41876682$0$5916$626a14ce@news.free.fr...
Je viens de vérifier , normalement le timeout est par défaut de 10s .
Si je met EmailChangeTimeOut(10), la je sors bien au bout de 10s sinon je
reste planté !!!
donc le timeout par défaut ne fonctionne pas ....
Un SocketConnecte sur le port 25 du serveur smtp permettrait de savoir il est accessible.
"QUINCY Bernard" a écrit dans le message de news: 41876682$0$5916$
Je viens de vérifier , normalement le timeout est par défaut de 10s . Si je met EmailChangeTimeOut(10), la je sors bien au bout de 10s sinon je reste planté !!! donc le timeout par défaut ne fonctionne pas ....
A+ Merci de vos réponses
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, Eric ecrivait (wrote) :
Bonsoir,
Pour connaitre la validité d'un serveur (pas forcément de mail), tu peux soit résoudre l'adresse (netadresseip) ou soit tester sa réponse (ping).
Résoudre l'adresse en faisant un nslookup dessus (c'est ce que retourne netadresseip j'imagine) pourquoi pas.
Tester la réponse au ping, en revanche, n'est pas fiable, car certains serveurs qui existent bel et bien sont configurés pour ne pas répondre au ping. Pour s'en convaincre, aller par exemple sur :
http://www.noos.fr
puis tenter de le pinguer...
Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait qu'il acceptera la connexion. Il peut par exemple demander une authentification et refuser la connexion si cette authentification n'est pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est prévu dans la v9 paraît-il).
-- Eric
dans (in) fr.comp.developpement.agl.windev, Eric <none@none.com>
ecrivait (wrote) :
Bonsoir,
Pour connaitre la validité d'un serveur (pas forcément de mail), tu
peux soit résoudre l'adresse (netadresseip) ou soit tester sa réponse
(ping).
Résoudre l'adresse en faisant un nslookup dessus (c'est ce que retourne
netadresseip j'imagine) pourquoi pas.
Tester la réponse au ping, en revanche, n'est pas fiable, car certains
serveurs qui existent bel et bien sont configurés pour ne pas répondre
au ping. Pour s'en convaincre, aller par exemple sur :
http://www.noos.fr
puis tenter de le pinguer...
Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait
qu'il acceptera la connexion. Il peut par exemple demander une
authentification et refuser la connexion si cette authentification n'est
pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est
prévu dans la v9 paraît-il).
dans (in) fr.comp.developpement.agl.windev, Eric ecrivait (wrote) :
Bonsoir,
Pour connaitre la validité d'un serveur (pas forcément de mail), tu peux soit résoudre l'adresse (netadresseip) ou soit tester sa réponse (ping).
Résoudre l'adresse en faisant un nslookup dessus (c'est ce que retourne netadresseip j'imagine) pourquoi pas.
Tester la réponse au ping, en revanche, n'est pas fiable, car certains serveurs qui existent bel et bien sont configurés pour ne pas répondre au ping. Pour s'en convaincre, aller par exemple sur :
http://www.noos.fr
puis tenter de le pinguer...
Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait qu'il acceptera la connexion. Il peut par exemple demander une authentification et refuser la connexion si cette authentification n'est pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est prévu dans la v9 paraît-il).
-- Eric
:-\)
> Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait qu'il acceptera la connexion. Il peut par exemple demander une authentification et refuser la connexion si cette authentification n'est pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est prévu dans la v9 paraît-il).
Oui mais s'il accepte une connexion sur le port 25 la fonction smtp de windev ne partira pas en boucle sans fin, que le serveur demande une authentification ou pas
> Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait
qu'il acceptera la connexion. Il peut par exemple demander une
authentification et refuser la connexion si cette authentification n'est
pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est
prévu dans la v9 paraît-il).
Oui mais s'il accepte une connexion sur le port 25 la fonction smtp de
windev ne partira pas en boucle sans fin, que le serveur demande une
authentification ou pas
> Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait qu'il acceptera la connexion. Il peut par exemple demander une authentification et refuser la connexion si cette authentification n'est pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est prévu dans la v9 paraît-il).
Oui mais s'il accepte une connexion sur le port 25 la fonction smtp de windev ne partira pas en boucle sans fin, que le serveur demande une authentification ou pas
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, ":-)" ecrivait (wrote) :
Bonsoir,
Oui mais s'il accepte une connexion sur le port 25 la fonction smtp de windev ne partira pas en boucle sans fin, que le serveur demande une authentification ou pas
Effectivement, sauf que rien dans la question de Bernard ne permet de savoir si le problème qu'il rencontre vient du serveur SMTP ou de Windev...
Une piste serait de tenter d'initier un échange en TELNET avec le serveur en question, histoire de voir ce qu'il répond.
Tout ça est compliqué et mon propos était, même si je ne l'ai peut-être pas formulé assez clairement, de dire que dialoguer avec des serveurs sur Internet n'est pas trivial, et que les commandes Windev permettant de le faire ne sont pas forcément standard, adaptées et efficaces.
-- Eric
dans (in) fr.comp.developpement.agl.windev, ":-)" <nospam@nospam.com>
ecrivait (wrote) :
Bonsoir,
Oui mais s'il accepte une connexion sur le port 25 la fonction smtp de
windev ne partira pas en boucle sans fin, que le serveur demande une
authentification ou pas
Effectivement, sauf que rien dans la question de Bernard ne permet de
savoir si le problème qu'il rencontre vient du serveur SMTP ou de
Windev...
Une piste serait de tenter d'initier un échange en TELNET avec le
serveur en question, histoire de voir ce qu'il répond.
Tout ça est compliqué et mon propos était, même si je ne l'ai peut-être
pas formulé assez clairement, de dire que dialoguer avec des serveurs
sur Internet n'est pas trivial, et que les commandes Windev permettant
de le faire ne sont pas forcément standard, adaptées et efficaces.
dans (in) fr.comp.developpement.agl.windev, ":-)" ecrivait (wrote) :
Bonsoir,
Oui mais s'il accepte une connexion sur le port 25 la fonction smtp de windev ne partira pas en boucle sans fin, que le serveur demande une authentification ou pas
Effectivement, sauf que rien dans la question de Bernard ne permet de savoir si le problème qu'il rencontre vient du serveur SMTP ou de Windev...
Une piste serait de tenter d'initier un échange en TELNET avec le serveur en question, histoire de voir ce qu'il répond.
Tout ça est compliqué et mon propos était, même si je ne l'ai peut-être pas formulé assez clairement, de dire que dialoguer avec des serveurs sur Internet n'est pas trivial, et que les commandes Windev permettant de le faire ne sont pas forcément standard, adaptées et efficaces.
-- Eric
Eric
Eric Demeester a émis l'idée suivante :
Effectivement, sauf que rien dans la question de Bernard ne permet de savoir si le problème qu'il rencontre vient du serveur SMTP ou de Windev...
Tout est dans la question justement!
Citation Bernardinesque: "Pas de problème mais ce sont les utilisateurs qui rentrent leur smtp, et si il y a une erreur sur le smtp , le programme reste bloqué ."
Le problème vient de l'utilisateur (qui saisit des conneries!). La fonction emailouvresessionsmtp est blocante (car serveur smtp erroné) sauf si Bernard force le timeout avec emailchangetimeout.
Mais après relecture de la doc...
Les fonctions de connexion EmailOuvreSession, EmailOuvreSessionPOP3 et EmailOuvreSessionSMTP sont bloquantes pendant toute la durée de la connexion. Si le serveur ne répond pas, ces fonctions sont bloquantes pendant la durée du timeout.
Attention : la valeur du timeout définie avec la fonction EmailChangeTimeOut n'a pas de rapport avec la durée des fonctions EmailOuvreSession, EmailOuvreSessionPOP3 et EmailOuvreSessionSMTP. En effet, il s'agit de la durée de non réponse du serveur. Il faut ajouter à cette durée le temps de la résolution de l'adresse.
Par exemple, avec un serveur qui répond instantanément, la connexion peut durer 3 à 4 secondes si le DNS est lent (même si le timeout est de 1 seconde).
Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait qu'il acceptera la connexion. Il peut par exemple demander une authentification et refuser la connexion si cette authentification n'est pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est prévu dans la v9 paraît-il).
La question était de tester la validité d'un serveur (Comme l'indique le sujet du post initial), pas de savoir si la connection serait acceptée. Non?
Tester la réponse au ping, en revanche, n'est pas fiable
Là, je suis d'accord, c'est pas la meilleure solution ;-)
A+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Eric Demeester a émis l'idée suivante :
Effectivement, sauf que rien dans la question de Bernard ne permet de
savoir si le problème qu'il rencontre vient du serveur SMTP ou de
Windev...
Tout est dans la question justement!
Citation Bernardinesque: "Pas de problème mais ce sont les utilisateurs
qui rentrent leur smtp, et si
il y a une erreur sur le smtp , le programme reste bloqué ."
Le problème vient de l'utilisateur (qui saisit des conneries!).
La fonction emailouvresessionsmtp est blocante (car serveur smtp
erroné) sauf si Bernard force le timeout avec emailchangetimeout.
Mais après relecture de la doc...
Les fonctions de connexion EmailOuvreSession, EmailOuvreSessionPOP3 et
EmailOuvreSessionSMTP sont bloquantes pendant toute la durée de la
connexion. Si le serveur ne répond pas, ces fonctions sont bloquantes
pendant la durée du timeout.
Attention : la valeur du timeout définie avec la fonction
EmailChangeTimeOut n'a pas de rapport avec la durée des fonctions
EmailOuvreSession, EmailOuvreSessionPOP3 et EmailOuvreSessionSMTP. En
effet, il s'agit de la durée de non réponse du serveur. Il faut ajouter
à cette durée le temps de la résolution de l'adresse.
Par exemple, avec un serveur qui répond instantanément, la connexion
peut durer 3 à 4 secondes si le DNS est lent (même si le timeout est de
1 seconde).
Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait
qu'il acceptera la connexion. Il peut par exemple demander une
authentification et refuser la connexion si cette authentification n'est
pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est
prévu dans la v9 paraît-il).
La question était de tester la validité d'un serveur (Comme l'indique
le sujet du post initial), pas de savoir si la connection serait
acceptée.
Non?
Tester la réponse au ping, en revanche, n'est pas fiable
Là, je suis d'accord, c'est pas la meilleure solution ;-)
A+
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Effectivement, sauf que rien dans la question de Bernard ne permet de savoir si le problème qu'il rencontre vient du serveur SMTP ou de Windev...
Tout est dans la question justement!
Citation Bernardinesque: "Pas de problème mais ce sont les utilisateurs qui rentrent leur smtp, et si il y a une erreur sur le smtp , le programme reste bloqué ."
Le problème vient de l'utilisateur (qui saisit des conneries!). La fonction emailouvresessionsmtp est blocante (car serveur smtp erroné) sauf si Bernard force le timeout avec emailchangetimeout.
Mais après relecture de la doc...
Les fonctions de connexion EmailOuvreSession, EmailOuvreSessionPOP3 et EmailOuvreSessionSMTP sont bloquantes pendant toute la durée de la connexion. Si le serveur ne répond pas, ces fonctions sont bloquantes pendant la durée du timeout.
Attention : la valeur du timeout définie avec la fonction EmailChangeTimeOut n'a pas de rapport avec la durée des fonctions EmailOuvreSession, EmailOuvreSessionPOP3 et EmailOuvreSessionSMTP. En effet, il s'agit de la durée de non réponse du serveur. Il faut ajouter à cette durée le temps de la résolution de l'adresse.
Par exemple, avec un serveur qui répond instantanément, la connexion peut durer 3 à 4 secondes si le DNS est lent (même si le timeout est de 1 seconde).
Par ailleurs, le fait qu'un serveur smtp existe ne présume pas du fait qu'il acceptera la connexion. Il peut par exemple demander une authentification et refuser la connexion si cette authentification n'est pas correcte (Windev ne sait à ce jour pas gérer le SMTP AUTH, c'est prévu dans la v9 paraît-il).
La question était de tester la validité d'un serveur (Comme l'indique le sujet du post initial), pas de savoir si la connection serait acceptée. Non?
Tester la réponse au ping, en revanche, n'est pas fiable
Là, je suis d'accord, c'est pas la meilleure solution ;-)
A+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net