[Java] Mini client smtp

Mini client smtp [Java] - Java - Programmation

Marsh Posté le 14-03-2003 à 10:41:55    

Bonjour a tous,  
donc j'ai crée un petit programme permettant d'envoyer des e-mails, tout me semble correct, mais le problème est que les mail ne partent  et je comprends pas du tout pourquoi :/ il se connecte bien au server smtp, dialogue avec.. mais ca ne marche pas :/  
 
Je vous met le code:  
 
----------------------------------------------------------------
import java.io.*;
import java.net.*;
 
 
class smtpClient
{
 private String server, message, dest, origin, title;
 private int port;
 private Socket socket;
 
 
 public smtpClient (String serv, int por, String org)
 {
  System.out.println("*** Constructeur smtpClient." );
  server = serv;
  port = por;
  origin = org;
 }
 
 
 public void CreateMsg(String dst, String tit, String msg)
 {
  System.out.println("*** Create msg." );
  title = tit;
  message = msg;
  dest = dst;
 }
 
 
 public void sendMsg()
 {
 try
 {
 System.out.println("*** Send msg." );
 
 socket=new Socket(server,port);
 DataOutputStream out=new DataOutputStream(socket.getOutputStream());
 DataInputStream in=new DataInputStream(socket.getInputStream());
 
 System.out.println("*** Connexion etablie" );
   
   
 out.writeBytes("HELO vasile25.md\r\n" );
 out.writeBytes("MAIL FROM:<"+origin+">\r\n" );
 out.writeBytes("RCPT TO:<"+dest+">\r\n" );
 out.writeBytes("DATA\r\n" );
 
 if(title!=null) out.writeBytes("Subject: "+title+"\n\n" );
 out.writeBytes(message+"\r\n.\r\nQUIT\r\n" );
 socket.close();
   
 System.out.println("*** Msg bien envoye." );
   
 }
 catch (Exception e) {
  System.out.println("*** Erreur connection" );
 }
 }
   
 
 public static void main (String args[])
 {
 
  String s="",p="",e="",d="",m="",t="";
 try
 {
        InputStreamReader conv = new InputStreamReader(System.in);
  BufferedReader in = new BufferedReader(conv);
 
  System.out.print("Serveur smtp: " );
  s = in.readLine();
  //System.out.print("Port smtp: " );
  //p = in.readLine();
  System.out.print("Mail emetteur: " );
  e = in.readLine();
  System.out.print("Mail destinataire: " );
  d = in.readLine();
  System.out.print("Titre du mail: " );
  t = in.readLine();
  System.out.print("Message: " );
  m = in.readLine();
 }
 catch (IOException f) {}
 
 smtpClient c = new smtpClient(s,25,e); // smtp,port,emeteur
 c.CreateMsg(d,t,m); // dest,title,msg
 c.sendMsg();
 
 }
 
}
----------------------------------------------------------------
 
Quelqu'un aurait-il une idée? Ai-je fais des erreurs (inconsciemment ).  
 
Merci.

Reply

Marsh Posté le 14-03-2003 à 10:41:55   

Reply

Marsh Posté le 14-03-2003 à 10:52:17    

c'est voulu de ne pas utilise une librairie performante et gratuite?
 
JavaMail tu connais et si oui pq ne l'utilises tu pas? Parce que jouer avec des sockets pour envoyer des mails comme ca c'est pas top quoi :/


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-03-2003 à 11:25:37    

DarkLord a écrit :

c'est voulu de ne pas utilise une librairie performante et gratuite?
 
JavaMail tu connais et si oui pq ne l'utilises tu pas? Parce que jouer avec des sockets pour envoyer des mails comme ca c'est pas top quoi :/


 
Ha là là, s'il a pas fait exprès et qu'il connaissait pas Java Mail, ça va faire mal.
C'est toujours dur quand, après avoir fait quelque chose, tu découvres que tu avais à ta disposition qqch de mieux que ce que t'as fait...

Reply

Marsh Posté le 14-03-2003 à 11:43:46    

Bien sûr que je connais java mail, mais en fait j'ai voulu faire ce petit programme pour mieux comprendre le protocole smtp.. et j'aimerai faire en sorte que mon programme marche.. donc si quelqu'un sait ou est l'erreur, ca m'interesse !
 

Reply

Marsh Posté le 14-03-2003 à 12:00:48    

mesta a écrit :

Bien sûr que je connais java mail, mais en fait j'ai voulu faire ce petit programme pour mieux comprendre le protocole smtp.. et j'aimerai faire en sorte que mon programme marche.. donc si quelqu'un sait ou est l'erreur, ca m'interesse !
 
 


 
bin regarde dans les logs de ton serveur SMTP pour voir ce qu'il recrache comme erreur :/


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-03-2003 à 19:05:43    

Citation :

bin regarde dans les logs de ton serveur SMTP pour voir ce qu'il recrache comme erreur :/


 
Ce n'est PAS mon serveur ftp.. j'en utilise un au hazard.. (smtp.ifrance.com / smtp.laposte.net / ..)
 
Personne n'as une idée s'il vous plait ?

Reply

Marsh Posté le 14-03-2003 à 19:07:44    

ben tu peux pas utiliser un serveur smtp comme hein :D
enfin si ces smtp là sont ouverts, tant pis pour eux (et pour les connards qui reçoivent les spams apres :/)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 14-03-2003 à 19:09:40    

Pourtant j'arrive a me connecter a ces serveur.. bizarre :/

Reply

Marsh Posté le 14-03-2003 à 19:14:46    

c'est pas pour ça qu'ils acceptent de relayer tes mails
m'enfin ils te balancent pas un msg d'erreur??


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 14-03-2003 à 19:17:59    

Non non rien du tout, ca passe nikel !!
 
Compiles le prog et test tu verras bien/

Reply

Marsh Posté le 14-03-2003 à 19:17:59   

Reply

Marsh Posté le 14-03-2003 à 19:20:04    

mesta a écrit :

Non non rien du tout, ca passe nikel !!
 
Compiles le prog et test tu verras bien/


 
bon si je reboot sur mon linux j'essaierai de ton truc. Je dois bien avoir un sendmail qui traine ;)


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-03-2003 à 19:20:18    

je pense que c juste un probleme d'authentification au niveau du serveur smtp,  
j'espere bien que tout le monde ne peut pas se connecter comme ça chez eux pour relayer les mails...
 :sweat:

Reply

Marsh Posté le 14-03-2003 à 19:22:19    

Merci DarkLord ;)
 
uriel> ben si c aussi simple.. ;) (telnet)

Reply

Marsh Posté le 14-03-2003 à 19:27:09    

mesta a écrit :

Merci DarkLord ;)
 
uriel> ben si c aussi simple.. ;) (telnet)


 
oui je viens juste d'essayer par telnet sur la poste et effectivement j'arrive à me connecter comme ça, mais pour ce qui est du relai des mails...nib
 :ange:

Reply

Marsh Posté le 14-03-2003 à 19:29:43    

mesta, essaie en telnet sur les serveurs SMTP que tu utilise pour voir si ca passe en manuel


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 14-03-2003 à 19:30:05    

mesta a écrit :

Non non rien du tout, ca passe nikel !!
 
Compiles le prog et test tu verras bien/

ben je vois surtout que tu ne lis absolument pas ce que le serveur pourrait te renvoyer donc je me permet de douter :heink:
(ton inputdatastream n'est pas utilisé il me semble)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 14-03-2003 à 19:47:56    

En fait je n'avais pas testé de chez moi le prog..  
Chez moi le probleme est que je n'arrive a me connecter a aucun serveur smtp via telnet (je viens de m'en apercevoir)..  
 
Ma question est: pourquoi ne puis-je pas me connecter a ces serveur.. je suis sous XP !

Reply

Marsh Posté le 14-03-2003 à 19:51:36    

ben moi aussi et avec  

open smtp.laposte.net 25


ça passe nickel,  
un petit

helo


et j'ai ma reponse 250 comme il faut, mais comme je disais il envoit pas les mails que je lui donne...

Reply

Marsh Posté le 14-03-2003 à 19:53:45    

Pour ca il te faut un compte chez eux ..
 
Ca me saoul cet XP.. il me bloke tout :/

Reply

Marsh Posté le 14-03-2003 à 19:56:22    

mesta a écrit :

Pour ca il te faut un compte chez eux ..
 
Ca me saoul cet XP.. il me bloke tout :/


à aucun moment je donne mon nom ou qq que soit, t'as pas besoin de compte chez eux pour te connecter comme j'ai fais, et en + moi aussi j'ai XP, c pour ça que je comprends pas ce qui va pas... [:wawash]

Reply

Marsh Posté le 14-03-2003 à 20:00:00    

Moi non plus :/ j'ai pourtant coupé mon FW ..  
 
Peut etre est-ce les connexion établies par vmware qui foutent la merde.. je desinstalle et retry ! (fo rebooter grrr)

Reply

Marsh Posté le 14-03-2003 à 20:10:07    

Toujours la meme chose :/  
 
ca me saoule cette histoire :?

Reply

Marsh Posté le 14-03-2003 à 20:14:45    

Reply

Marsh Posté le 14-03-2003 à 20:29:20    

Oui oui uriel..  :sarcastic: va comprendre lol

Reply

Marsh Posté le 14-03-2003 à 20:31:51    

Les connections faites a partir de la commande ftp ne marche pas non plus ( $ ftp / $ open ftp... )

Reply

Marsh Posté le 14-03-2003 à 20:58:28    

Code :
  1. if(title!=null) out.writeBytes("Subject: "+title+"\n\n" );
  2. out.writeBytes(message+"\r\n.\r\nQUIT\r\n" );
  3. socket.close();
  4.  
  5. System.out.println("*** Msg bien envoye." );

 
 
Faut pas attendre d'avoir une confirmation avant de se déconecter?

Reply

Marsh Posté le 15-03-2003 à 11:11:14    

Ca marche enfin.. j'arrive a me connecter a mes serveur smtp !
 
Mais je n'ai toujours pas résolu le probleme dans mon programme.. en fait je ne comprends pas pourquoi il n'envoi pas le mail car je n'ai aucun message d'erreurs !

Citation :


Serveur smtp: smtp.ifrance.com
Mail emetteur: mesta@ifrance.com
Mail destinataire: xxx@aol.com
Titre du mail: Test
Message: Hi
*** Constructeur smtpClient.
*** Create msg.
*** Send msg.
*** Connexion etablie
*** Msg bien envoye.


 
Personne ne pourrait m'aider s'il vous plait.. a trouver une solution a mon probleme ;) merci

Reply

Marsh Posté le 15-03-2003 à 11:30:58    

mesta a écrit :

Ca marche enfin.. j'arrive a me connecter a mes serveur smtp !
 
Mais je n'ai toujours pas résolu le probleme dans mon programme.. en fait je ne comprends pas pourquoi il n'envoi pas le mail car je n'ai aucun message d'erreurs !


moins moins te le dit : ton, DataInputStream dans sendMsg(), tu affiches jamais ce qu'il contient. Or, c'est dedans que se trouveront les éventuels messages d'erreur ou de confirmation.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 15-03-2003 à 11:38:15    

Ok c bon ca marche ! j'y suis arrivé d'un autre moyen ;)
 

Citation :


PrintWriter to;
  BufferedReader from;
  String str;
 
  try {
   
   System.out.println("*** Send msg." );
   
         socket = new Socket(InetAddress.getByName(server),port);
 
         to = new PrintWriter(
                    new BufferedWriter (
                        new OutputStreamWriter (
                            socket.getOutputStream())),true);
         from = new BufferedReader(
                    new InputStreamReader (
                            socket.getInputStream()));
 
         str = from.readLine();
         to.println("helo plus.bas" );
           from.readLine();
         to.println("mail from: <"+origin+">" );
           from.readLine();
         to.println("rcpt to: <"+dest+">" );
           from.readLine();
         to.println("data" );
           from.readLine();
         to.println(message + "\r\n.\r\n" );
           from.readLine();
 
         System.out.println("*** Msg bien envoye." );
 
         socket.close();
 
      } catch ( Exception e ) {
        System.exit(1);
       }

Reply

Marsh Posté le 15-03-2003 à 20:39:42    

from.readline et t'en fais jamais rien ça sert à rien non plus [:rofl]

Reply

Marsh Posté le 18-03-2003 à 10:52:14    

En fait j'avais pas fini mon programme quand j'ai copié cette partie... .
 
Voici mon client smtp.
 

Code :
  1. import java.io.*;
  2. import java.net.*;
  3. class smtp
  4. {
  5. private String server, message, dest, origin;
  6. private int port;
  7. private Socket socket;
  8. public smtp (String serv, int por, String org, String dst, String msg)
  9. {
  10.  System.out.println("*** Constructeur smtpClient." );
  11.  server = serv;
  12.  port = por;
  13.  origin = org;
  14.  message = msg;
  15.  dest = dst;
  16. }
  17. public void send()
  18. {
  19.  PrintWriter to;
  20.  BufferedReader from;
  21.  String str;
  22.  try {
  23.   System.out.println("*** Send msg." );
  24.          socket = new Socket(InetAddress.getByName(server),port);
  25.          to = new PrintWriter(
  26.                     new BufferedWriter (
  27.                         new OutputStreamWriter (
  28.                             socket.getOutputStream())),true);
  29.          from = new BufferedReader(
  30.                     new InputStreamReader (
  31.                             socket.getInputStream()));
  32.   str = from.readLine();
  33.   System.out.println(str);
  34.          to.println("HELO iTz" );
  35.   str = from.readLine();
  36.   System.out.println("HELO - "+str);
  37.          to.println("mail from: <"+origin+">" );
  38.            str = from.readLine();
  39.            System.out.println("MAIL FROM - "+str);
  40.          
  41.          to.println("rcpt to: <"+dest+">" );
  42.            str = from.readLine();
  43.            System.out.println("RCPT - "+str);
  44.          
  45.          to.println("data" );
  46.            str = from.readLine();
  47.            System.out.println("DATA - "+str);
  48.          
  49.             to.println(message);
  50.             to.println("." );
  51.             str = from.readLine();
  52.             System.out.println("FIN MSG - "+str);
  53.            
  54.             to.println("rset" );
  55.            str = from.readLine();
  56.            System.out.println("RSET - "+str);
  57.             to.println("quit" );
  58.            str = from.readLine();
  59.            System.out.println("QUIT - "+str);
  60.          
  61.          System.out.println("*** Msg bien envoye." );
  62.          socket.close();
  63.       } catch ( Exception e ) {
  64.         System.err.println("Erreur de connexion : "+e.toString());
  65.         System.exit(1);
  66.        }
  67. }
  68. public static void main (String args[])
  69. {
  70.  String s="",e="",d="",m="",t="";
  71.  try
  72. {
  73.        InputStreamReader conv = new InputStreamReader(System.in);
  74.  BufferedReader in = new BufferedReader(conv);
  75.  System.out.print("Serveur smtp: " );
  76.  s = in.readLine();
  77.  System.out.print("Mail emetteur: " );
  78.  e = in.readLine();
  79.  System.out.print("Mail destinataire: " );
  80.  d = in.readLine();
  81.  System.out.print("Message: " );
  82.  m = in.readLine();
  83. }
  84. catch (IOException f) {}
  85. smtp c = new smtp(s,25,e,d,m);
  86. c.send();
  87. }
  88. }


 
Mon client pop.
 

Code :
  1. import java.io.*;
  2. import java.net.*;
  3. import java.util.*;
  4. class pop3
  5. {
  6. private String server, login, pass;
  7. private int port;
  8. private Socket socket;
  9. private static InputStreamReader conv = new InputStreamReader(System.in);
  10. private static BufferedReader in = new BufferedReader(conv);
  11. public pop3 (String serv, int por, String log, String pas)
  12. {
  13.   server = serv;
  14.   port = por;
  15.   login = log;
  16.   pass = pas;
  17. }
  18. public void receive()
  19. {
  20. PrintWriter to;
  21. BufferedReader from;
  22. String str;
  23. try {
  24.   System.out.println("*** Connection." );
  25.   socket = new Socket(InetAddress.getByName(server),port);
  26.   to = new PrintWriter(
  27.         new BufferedWriter (
  28.          new OutputStreamWriter (
  29.           socket.getOutputStream())),true);
  30.   from = new BufferedReader(
  31.           new InputStreamReader (
  32.            socket.getInputStream()));
  33.   str = from.readLine();
  34.   System.out.println(str);
  35.   to.println("user "+login);
  36.   System.out.println("USER - "+from.readLine());
  37.   to.println("pass "+pass);
  38.   if (str.startsWith("-ERR" )) { System.out.println("Erreur login/mdp" ); System.exit(1); }
  39.   System.out.println("PASS - "+from.readLine());
  40.   to.println("list" );
  41.   str = from.readLine();
  42.   System.out.println("LIST - "+str);
  43.   StringTokenizer nb_msg = new StringTokenizer(str); nb_msg.nextToken();
  44.   int tmp = Integer.parseInt(nb_msg.nextToken());
  45.   int it = tmp;
  46.   while (it!=0) { System.out.println(from.readLine()); it--; }
  47.   str = from.readLine();
  48.   System.out.println("// LIST - "+str+" "+tmp);  
  49.   String cont = "";
  50.   while (tmp!=0 && !cont.equals("q" )) {
  51.     System.out.println(cont);
  52.     if (cont.equals("list" )) {
  53.       to.println("list" );
  54.       it = tmp+1;
  55.       while (it!=0) { System.out.println(from.readLine()); it--; }
  56.       str = from.readLine();
  57.     }
  58.     System.out.print("Lire mail numero: " );
  59.     cont = in.readLine();
  60.     System.out.println("\n--------------------- Debut du mail --------------------" );
  61.     to.println("RETR "+Integer.parseInt(cont));
  62.     boolean tp=false;
  63.     while (!tp) {
  64.       str = from.readLine();
  65.       if (str!=null && !str.equals("." )) {
  66.         System.out.println(str); }
  67.       else tp=true;
  68.     }
  69.     System.out.println("---------------------- Fin du mail ---------------------\n\nVoulez vous lire un autre mail? (\"q\" pour quitter, \"list\" pour voir les mails.)" );
  70.     cont = in.readLine();
  71.   }
  72.   to.println("quit" );
  73.   str = from.readLine();
  74.   System.out.println("QUIT - "+str);
  75.   socket.close();
  76. } catch ( Exception e ) {
  77.   System.err.println("Erreur de connexion : "+e.toString());
  78.   System.exit(1);
  79. }
  80. }
  81. public static void main (String args[])
  82. {
  83. String s="",e="",l="",p="";
  84. try
  85. {
  86. System.out.print("Serveur pop: " );
  87. s = in.readLine();
  88. System.out.print("Login: " );
  89. l = in.readLine();
  90. System.out.print("Pass: " );
  91. p = in.readLine();
  92. }
  93. catch (IOException f) {}
  94. pop3 c = new pop3(s,110,l,p); c.receive();
  95. }
  96. }

Reply

Marsh Posté le 18-03-2003 à 12:07:44    

et ça marche tjs pas et t'as tjs pas de msg d'erreur ? :D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-03-2003 à 12:35:23    

Tu portes bien ton pseudo mdrr !!!  :lol:  :lol:  :lol:  
 
Si si ca marche tres tres bien, mais bon j'ai bien été obligé de trouver mes erreurs tout seul puisque personne ne ma reellement aidé..

Reply

Marsh Posté le 18-03-2003 à 12:40:33    

mesta a écrit :

Tu portes bien ton pseudo mdrr !!!  :lol:  :lol:  :lol:  
 
Si si ca marche tres tres bien, mais bon j'ai bien été obligé de trouver mes erreurs tout seul puisque personne ne ma reellement aidé..


Il n'y a que des branleurs inutiles sur ce forum.


---------------
Le site de ma maman
Reply

Marsh Posté le 18-03-2003 à 12:43:47    

Non pas tout, ne me fais pas dire ce que je n'ai pas dis.. si je viens poster sur ce forum c'est qu'il y a une raison, mais sur ce sujet précis, je n'ai pas eu les reponses souhaitées, a mon grand regret.. et quand je vois des personnes comme "the real moins moins" qui se fout de la gueule des autres.. sympa  :non:  
 

Reply

Marsh Posté le 18-03-2003 à 12:45:42    

[:rofl]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 18-03-2003 à 12:45:56    

mesta a écrit :

Non pas tout, ne me fais pas dire ce que je n'ai pas dis.. si je viens poster sur ce forum c'est qu'il y a une raison, mais sur ce sujet précis, je n'ai pas eu les reponses souhaitées, a mon grand regret..


 
si tu connais d'avance les réponses que tu veux, alors pourquoi poser des questions?
 

mesta a écrit :


et quand je vois des personnes comme "the real moins moins" qui se fout de la gueule des autres.. sympa  :non:


alors là c'est fort.
tu te plaind que tu vois pas de messages d'erreur, je t'indique pourquoi (tu ne les lisais meme pas :sarcastic:) et apres tu viens me dire que je me fous de ta gueule?
 [:the real moins moins]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 18-03-2003 à 12:49:06    

EDIT : c'était pas très gentil :o


Message édité par Taiche le 18-03-2003 à 12:54:29

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 18-03-2003 à 12:53:22    

Si j'ai posté ce sujet c'est bien evident que je ne savais pas d'ou venait mon erreur..
 
C'est la magnière dont tu m'as repondu que je n'ai pas trés apprécié.. surtout les smileys evocateur [:rofl] Serait-ce une reaction un peu trop "succeptible" de ma part, mais tu ne m'en a pas laissé le choix ;)
 
Mais bon, on va dire que c'est un mal entendu :)

Reply

Marsh Posté le 18-03-2003 à 12:53:32    

ça cai pas tres gentil :(


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed