Palm (POL), CNetLibClientStream et protocol SMTP... - C++ - Programmation
Marsh Posté le 30-06-2002 à 19:49:57
Toujours pas de réponses...
Vous ne comprenez pas mon problème, il est trop compliqué ou ça vous embête de répondre
Si qqun pouvait m'aider, je lui en serait très reconnaissant...
Marsh Posté le 01-07-2002 à 03:55:59
Suffit de lire la spec:
http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc0821.html
Ta chaine devrait etre:
"HELO 127.0.0.1\r\n";
(tu mets ce qui est necessaire afin que ca se termine par \r\n dans la chaine envoyée).
A+,
Marsh Posté le 01-07-2002 à 08:25:47
J'ai déjà essayé cette façon de faire (comme tu peux le lire dans mon post), cela ne fonction pas.
J'ai aussi envoyé \r et \n en hexadécimal et en octal car dans un exemple utilisant d'autre fonction (pas objet), ils le faissait...
Marsh Posté le 01-07-2002 à 23:45:39
TheJohn a écrit a écrit : J'ai déjà essayé cette façon de faire (comme tu peux le lire dans mon post), cela ne fonction pas. J'ai aussi envoyé \r et \n en hexadécimal et en octal car dans un exemple utilisant d'autre fonction (pas objet), ils le faissait... |
Oui, mais dans ton post, il etait pas clair que tu essayais la bonne combinaison. Avec les caracteres en octal, ca devrait etre OK.
D'autre part, tu avais le numero d'IP entouré par [ ] ce qui etait pas bon, et tertio, si dans ton programme tu utilises 127.0.0.1 comme adresse ip, je serais assez surpris que ca fonctionne.
Tu utilises une autre adresse, et a mis celle là juste a titre d'exemple, je suppose?? ou ton serveur est il aussi sur la meme machine que ton client?
A+,
Marsh Posté le 01-07-2002 à 23:57:26
Merci de ton aide,
J'ai aussi déjà essayé en octal et en hexa sans résultats...
J'ai déjà essayé avec et sans [], sans résultats toujours
Ensuite l'adresse 127.0.0.1, ca doit jouer car un autre programme qui utilise le protocole SMTP, envoie aussi HELO 127.0.0.1, j'ai aussi essayé avec TelNet et ca fonctionne avec cette adresse...
Bref si tu as d'autre idée, je suis toujours preneur
Par contre connais-tu cette librairie POL, librairie objet pour Palm???
Merci déjà pour tes réfléxions
Marsh Posté le 02-07-2002 à 00:04:07
Au fait, la premiere chose que tu devrais faire, c'est d'envoyer un HELO simple, non suivi de l'adresse IP de ton client:
sock << "HELO\r\n";
Tu devrais alors recevoir une erreur 501 du style:
501 HELO requires domain address
Ce qui indiquera que tu causes effectivement a un serveur de mail dispo (sinon, il y a deja un pb soit avec ta connexion, soit il y a pas de serveur de mail ecoutant la socket ouverte).
Si tu recois l'erreur 501, alors tu peux envoyer ton
socket << "HELO xxx.yyy.zzz.www\r\n";
Ou xxx.yy.zzz.www est l'adresse internet de la machine sur laquelle tourne ton client.
A+,
Marsh Posté le 02-07-2002 à 00:06:30
Citation : J'ai aussi déjà essayé en octal et en hexa sans résultats... |
J'avais pas vu que c'etait du C++.
\r\n devraient alors suffire.
Citation : Ensuite l'adresse 127.0.0.1, ca doit jouer car un autre programme qui utilise le protocole SMTP, envoie aussi HELO 127.0.0.1, j'ai aussi essayé avec TelNet et ca fonctionne avec cette adresse... |
Non, ca c'est le localhost.
Ca ne doit marcher que si ton client et ton serveur sont sur la meme becane, je pense (mais je suis pas specialiste).
Sinon, il faut utiliser une IP reelle a mon avis.
A+,
Marsh Posté le 02-07-2002 à 00:07:52
Ok je vais essayer ca demain !!!
Mais dans le cas où j'envoie HELO 127.0.0.1\r\n, il devrait normalement aussi me renvoyer un erreur ou qqch, mais il ne me renvoie jamais rien, sauf au début (ready), a devenir fou ...
A+
Marsh Posté le 02-07-2002 à 00:20:38
TheJohn a écrit a écrit : Ok je vais essayer ca demain !!! Mais dans le cas où j'envoie HELO 127.0.0.1\r\n, il devrait normalement aussi me renvoyer un erreur ou qqch, mais il ne me renvoie jamais rien, sauf au début (ready), a devenir fou ... A+ |
Non:
Le ready est fait au niveau du protocole socket, pas du serveur mail. Le serveur mail se reveille et reponds apres un HELO (ou un EHLO pour un protocole plus avancé), donc tant que tu as pas recu une erreur 501 sur un HELO sans IP, tu ne sais pas vraiment s'il y a un serveur mail a l'ecoute a l'autre bout du socket.
D'ailleurs, l'envoi d'un HELO a vide est une pratique standard.
Note que tu as raison, en fait l'adresse IP n' a pas une grande importance dans l'histoire, puisque tout se fait a travers le socket, et localhost devrait etre accepté a priori.
A+,
Marsh Posté le 02-07-2002 à 00:24:44
Mais que penses tu du fait, que quand j'essaye HELO 127.0.0.1 et qu'il me renvoie rien, est-cw qu'avec HELO tout seul, ca va être différent ???
Je vais essayer cela demain...
Sinon connais tu cette librairie POL ???
@+
Marsh Posté le 02-07-2002 à 00:25:33
Et merci pour ton renseignement à propos du ready...
@+
Marsh Posté le 02-07-2002 à 00:32:36
TheJohn a écrit a écrit : Mais que penses tu du fait, que quand j'essaye HELO 127.0.0.1 et qu'il me renvoie rien, est-cw qu'avec HELO tout seul, ca va être différent ??? Je vais essayer cela demain... Sinon connais tu cette librairie POL ??? @+ |
Oui, avec HELO a vide, il doit te renvoyer un message d'erreur 501 (= commande SMTP avec bad parameters).
C'est la technique standard en fait pour savoir si un serveur mail est a l'ecoute sur le port ouvert.
Si tu recoit rien au bout d'un certain delai (timeout, a gerer par toi, sans doute, tu peux considerer qu'il y a pas de serveur mail a l'ecoute sur ce port, et qu'il est inutile de continuer).
A+,
Marsh Posté le 02-07-2002 à 10:50:38
J'ai essayé d'envoyer HELO\r\n et HELO\015\012, sans résultats
Je commence fortement à douter de ma connexion
@+
Marsh Posté le 02-07-2002 à 11:13:10
TheJohn a écrit a écrit : J'ai essayé d'envoyer HELO\r\n et HELO\015\012, sans résultats Je commence fortement à douter de ma connexion @+ |
HELO sans erreur renvoyée?
Alors apparement le serveur de mail ecoute pas la ou tu te connectes.
Si tu as acces a la machine du serveur de mail en admin, ca te donne quoi au niveau des logs?
A+,
Marsh Posté le 02-07-2002 à 11:27:45
En fait, je viens de verifier la RFC.
Normalement, lors de l'etablissement de la connexion, avant l'envoi de ton HELO, tu dois recevoir un
220 <SP> domain-name <SP> Service ready <CRLF>
C'est ce que tu indiquais par "ready" dans une de tes reponses?
A+,
Marsh Posté le 02-07-2002 à 11:30:57
Il y a bien un serveur de mail car je l'utilise déjà pour ma messagerie électronique
Il écoute bien sur ce port car avec un telnet sur le port 25, le serveur répond et permet d'envoyer un mail
Il utilise bien SMTP...
Nous n'avons pas accès au serveur de mail..
Merci
@+
Marsh Posté le 02-07-2002 à 11:35:42
Je viens verifier l'existence du serveur SMTP en direct:
Code :
|
Le serveur est OK. Donc c'est ta connexion qui pose probleme.
A+,
PS: j'ai modifié mon IP dans la reponse.
PPS: Nos mails se sont croisés.
Marsh Posté le 02-07-2002 à 12:25:13
Merci, je vais donc vérifier ma connexion...
Mais la librairie que j'utilise est tellement mal documentée (POL --> librairie objet pour Palm), si tu connais ???
@+
Marsh Posté le 02-07-2002 à 14:35:04
TheJohn a écrit a écrit : Merci, je vais donc vérifier ma connexion... Mais la librairie que j'utilise est tellement mal documentée (POL --> librairie objet pour Palm), si tu connais ??? @+ |
Non. Si je devais develloper sous Palm, j'aurais essayé un produit avec un nom allemand pour lequel j'ai vu de la pub dans Dr Dobbs (pas le nom en tete).
Pas de doc en ligne pour POL. Donc j'ai pas d'idée sur ce qui peut deconner.
A+,
Marsh Posté le 29-06-2002 à 12:39:31
HELP ME !!!!
J'utilise la librairie objet POL (Palm Object Library) afin de réaliser un programme sur Palm qui envoie des mails en utilisant le protocole SMTP.
J'ai un sérieux problème avec le code suivant :
----------------------------------------------------
1 Char temp[100];
2 CNetLibClientStream sock(&nlib, netSocketTypeStream,
3 netSocketProtoIPTCP, "smtp.freesurf.ch", 25, 9999);
4
5 sock >> temp; // Authentification of the server
6 FrmCustomAlert(ErreurAlert, temp, "", "" );
7
8 sock << "HELO [127.0.0.1]";
9 sock >> temp;
10 FrmCustomAlert(ErreurAlert, temp, "", "" );
----------------------------------------------------
Je crée une connexion avec le serveur (ligne 2 et 3), le socket (ligne 5) me renvoie un message comme quoi le serveur est "ready". J'affiche ce message (ligne 6). Ensuite j'envoie la première commande SMTP sur le socket (ligne 8). Puis j'affiche (ligne 9 et 10) le message que le serveur me renvoie. Le problème c'est que je ne reçoit rien du serveur (il devrait m'afficher un message comme quoi il a bien reçut le message). Si je continue d'envoyer les commandes d'envoi d'un mail (RCPT, TO, ...), le mail n'est quand même pas envoyé...
Le problème vient peut-être de la chaine envoyée (ligne 8). J'ai déjà essayé de rajouter un CR (\n, aussi en hexa, octal) et/ou un LF (\r), mais rien ne change... Je ne trouve pas de solution qqn, si quelqu'un à une idée ou bien un exemple...
Bon week end et merci d'avance
---------------
On a de la chance avec le temps...