IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API standards et tierces Java Discussion :

Java, SMTP, fichier joint


Sujet :

API standards et tierces Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Par défaut Java, SMTP, fichier joint
    Bonjour,
    J'ai developpé un client simple pour l'envoi de mail avec le protocole smtp. Je souhaite joindre un fichier dans le mail. L'envoi du mail se passe bien. J'ai bien un fichier joint dans le mail. Mais ce n'est pas le fichier qui se trouve dans le repertoire courant. D'ailleurs, les champs expéditeurs, objet, etc ... ne sont pas renseigné alors qu'ils le sont dans mon code.

    Si quelqu'un a une idée, je suis preneur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
       import java.net.*;
       import java.io.*;  
     
        public class ClientSMTPConsole{
     
          String fin ="FINMESSAGE";
          String CRLF ="\r\n";
          StringBuffer message = new StringBuffer();
          String phrase;
          StringBuffer entete, entete2;
          String nom_serveur, adresse_desti, adresse_expe, objet;
          int port_server = 25;
          Socket socketC = null;
          String messageR =null;
          InputStream is = null;
          PrintWriter fluxSortie = null;
          BufferedReader fluxEntree = null;
          StringBuffer msgAenvoyer;
          PrintWriter PW = null;    
          String message_recu = null;	 
     
           public ClientSMTPConsole(){
             this.saisieArgs();
             this.constrEntete();
             this.saisieCorpsMsg();
             this.lancerEchange(); 
          }
     
           public void saisieArgs(){
             nom_serveur = "10.47.0.8";
    			adresse_expe = "test@centralys.com";
    			adresse_desti = "test@centralys.com";
    			objet = "MISE A JOUR CONNEXION";
          }
     
           public void constrEntete(){
             entete=new StringBuffer("");
       		entete.append("Content-Type: multipart/mixed; boundary=\"didondinaditondelosdudosdodudundodudindon\"\r\n");
    			entete.append("--didondinaditondelosdudosdodudundodudindon\r\n");      
    			entete.append("From:"+adresse_expe+CRLF);
             entete.append("To:"+adresse_desti+CRLF);
             entete.append("Subject:"+objet+CRLF);
             entete.append("MIME-Version: 1.0"+CRLF);
             entete.append("Content-Type: text/plain; charset=iso-8859-1"+CRLF);
             entete.append("Content-Transfer-Encoding: 8bit"+CRLF);
    			entete.append("--didondinaditondelosdudosdodudundodudindon\r\n");
    			entete.append("Content-Type: application/octet-stream; name=\"torcy.rdp\"\r\n\r\n");
    			entete.append("Content-Transfer-Encoding: base64\r\n");
    			entete.append("Content-Disposition: attachment; filename=\"torcy.rdp\"\r\n\r\n");
    			entete.append("--didondinaditondelosdudosdodudundodudindon\r\n");
          }
     
           public void saisieCorpsMsg(){
             while(!(phrase="FINMESSAGE").startsWith(fin)){        
    				message.append(phrase);
             }
             message.append("\r\n.");
          }
     
    		public void lancerEchange(){
             try{
                socketC = new Socket(nom_serveur, port_server);
             }
                 catch(UnknownHostException excep1){
                   System.out.println("Erreur de création du socket"+excep1);
                }
                 catch(IOException excep2){
                   System.out.println("Erreur de création du socket"+excep2);
                }
             try{
                fluxSortie = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socketC.getOutputStream())),true);
     
             }
                 catch( IOException excep5){
                   System.out.println("erreur pr os");
                   System.exit(0);
                } 
             try{
                fluxEntree =  new BufferedReader(new InputStreamReader(socketC.getInputStream()));
     
             }
                 catch(IOException excep4){
                   System.out.println("erreur");
                }
     
             String nom_hote_local=null;
             try{
                nom_hote_local= InetAddress.getLocalHost().getHostName();
             }
                 catch(IOException excep4){
                   System.out.println("erreur");
                }
             this.lireReponse("220");	
             fluxSortie.println("HELO "+nom_hote_local);
             this.lireReponse("250");
             fluxSortie.println("MAIL FROM: <"+adresse_expe+">");
             this.lireReponse("250");
             fluxSortie.println("RCPT TO: <"+adresse_desti+">");
             this.lireReponse("250");
             fluxSortie.println("DATA");
             this.lireReponse("354");
             fluxSortie.println(entete.toString());
             fluxSortie.println(message.toString());
             this.lireReponse("250");
             fluxSortie.println("QUIT");
             this.lireReponse("221");  
          }
           public void lireReponse(String codeErreur){
             try{
                messageR = fluxEntree.readLine();
             }
                 catch( IOException excep6){
                   System.out.println("erreur ");
                   System.exit(0);
                } 
             if(messageR.startsWith(codeErreur)==true){
                System.out.println(messageR);
             }
             else{
                System.exit(0);
             }
          }
           public static void main(String[]args){
             ClientSMTPConsole client = new ClientSMTPConsole();
          }
       }

  2. #2
    Membre expérimenté
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Par défaut
    Bonjour,
    javax.mail est l'api adaptée pour cet usage.

    Si toutefois tu veux te développer ta propre API, consulte des messages enregistrés au format ".eml" générés avec ThunderBird par exemple. il me semble qu'il y a des problèmes sur la syntaxe MIME:
    - le séparateur multipart "---didon" ne commence pas par --- dans la déclaration boundary="didon..."
    - les retours CRLF sont au format windows, un \n format unix devrait suffire.
    - je n'ai pas vu la partie "encodage base64" du fichier, j'ai mal lu??
    - au niveau SMTP, je n'aurais pas mis les "<" ">" autour des adresses mails.
    - la boucle while de constitution du message est sérieusement buggée: confusion du = .equals et == ? (désolé d'être aussi brutal )

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Ou sinon tu peux utiliser Jakarta Commons Email, une surcouche de JavaMail qui simplifie grandement l'envoie de mail...

    a++

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2
    Par défaut
    Merci pour vos messages.

    Je vais regarde cela une fois revenu au boulot.

Discussions similaires

  1. Envoyer un fichier joint en java
    Par stpaul04 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 03/09/2014, 21h30
  2. Réponses: 8
    Dernier message: 30/04/2007, 19h48
  3. [Audio]Java et fichiers Wav
    Par danael dans le forum Multimédia
    Réponses: 3
    Dernier message: 10/10/2005, 20h09
  4. [SAX] Passer d'objet java en fichier XML?
    Par spoutyoyo dans le forum Format d'échange (XML, JSON...)
    Réponses: 15
    Dernier message: 05/01/2005, 08h31
  5. Limiter taille fichier joint à un mail
    Par fdthierry dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 27/08/2004, 12h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo