Erreur avec javamail

Messages postés
54
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
10 août 2008
-
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008
-
Salut,
Quant j'execute le code suivant, j'aurai l'erreur: "Exception reading response".

import javax.mail.internet.*;
import javax.mail.*;
import java.util.*;
import java.io.*;
import javax.mail.internet.InternetAddress;

public class SimpleSender
{
 public static void main(String args[])
  {
    try
    {
      String smtpServer = "smtp.mail.yahoo.fr";
      String to = "[mailto:mail1@lilie@yahoo.fr lilie@yahoo.fr]";
      String from = "[mailto:francois@yahoo.fr francois@yahoo.fr]";
      String subject = "msg envoyé par javamail";
      String body = "slt, c le 1er essai avec javamail. j'espère que ça marchera inchallah! salam";
      send(smtpServer, to, from, subject, body);
    }
    catch (Exception ex)
    {
      System.out.println("Usage: java com.lotontech.mail.SimpleSender"
       +" smtpServer toAddress fromAddress subjectText bodyText");
    }
    System.exit(0);
  }
 
  // "send" method to send the message
  public static void send(String smtpServer, String to, String from, String subject, String body)
  {
    try
    {
      Properties props = System.getProperties();
      // -- Attaching to default Session, or we could start a new one --
      props.put("mail.smtp.host", smtpServer);
      Session session = Session.getDefaultInstance(props, null);
      // -- Create a new message --
      Message msg = new MimeMessage(session);
      // -- Set the FROM and TO fields --
      msg.setFrom(new InternetAddress(from));
      msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));
      // -- We could include CC recipients too --
      // if (cc != null)
      // msg.setRecipients(Message.RecipientType.CC
      // ,InternetAddress.parse(cc, false));
      // -- Set the subject and body text --
      msg.setSubject(subject);
      msg.setText(body);
      // -- Set some other header information --
      msg.setHeader("X-Mailer", "LOTONtechEmail");
      msg.setSentDate(new Date());
      // -- Send the message --
      Transport.send(msg);
      System.out.println("Message sent OK.");
    }
    catch (Exception ex)
    {
      ex.printStackTrace();
      System.out.println("Erreur: Exception in 'send' method !");
      System.out.println(ex.getMessage());
    }
  }
}
quel est le pb?

2 réponses

Messages postés
54
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
10 août 2008
1
Bonjour,

Qu'est-ce qu'un serveur d'échange (exchange server)?
A quoi sert-il exactement?
Dois-je le télécharger ou le configurer pour que l'exécution de mon programme marchera bien?
Ou dois-je faire quelque modifications dans d'autres fichiers JDK, Tomcat(j'utilise ce serveur car j'ai des servlets et des JSP),..... pour faire marcher le code?

J'attends vos reponses!
Merci
Messages postés
130
Date d'inscription
mardi 21 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2008

[mailto:S@lut S@lut] rakyouna,

Le problème vient du serveur smtp de yahoo qui est un peu capricieux!! En effet il faut que tu ajoute deux actions à faire dans ton code :
1 : tu dois t'authentifier auprès du serveur smtp.
2 : tu doit changer le port smtp du serveur, qui par défaut est 25, en 587.

Voici ce que tu dois copier pour qui tout ceci marche :
Tu crée une classe pour t'authentifier auorès du serveur smtp, voici le code :

public

class SMTPAuthenticatorService
extends Authenticator{

private String username =
null ;

private String password =
null;

public SMTPAuthenticatorService(String username,String password){

this.username = username;

this .password = password;
}

public SMTPAuthenticatorService(){
}

public
void setUsername(String username){

this.username = username;
}

public
void setPassword(String password){

this.password = password;
}

public PasswordAuthentication getPasswordAuthentication(){

return
new PasswordAuthentication(username, password);
}
}
Bon une fois que ceci est fait, dans ta classe "SimpleSender" tu met ça comme code :

Properties props = System.getProperties();
SMTPAuthenticatorService auth =

new SMTPAuthenticatorService(
"nomutilisateur",
"motdepass");

// -- Attaching to default Session, or we could start a new one --
props.put(
"mail.smtp.host", smtpServer);
props.put(
"mail.smtp.auth",
"true");
props.put(
"mail.smtp.port", Integer.toString(587));
Session session = Session.getDefaultInstance(props, auth);

Bon, on voit le bout du tunnel! Après tu lances tout ça et MIRACLE!! Ton e-mail sera envoyé!!

Reponse à la question 2

Exchange : c'est un serveur développé par microsoft. C'est une sorte de "super serveur" qui tourne généralement sur des bécanes monstrueuses. Ceci a pour but de centraliser de l'info au sein d'une entreprise (annuaire, messageries, etc...).

Après pour le configurer je ne peux pas te dire, moi je travaille avec un serveur Domino (concurent IBM d'exchange). Je pense que tu dois implémenter tout bêtement ton programme sur le serveur qui sera l'hébergeur.

Voilà tout! En te souhaitant une bonne continuation, je me prend un suppos et je me met au lit moi!!

--- Moucave , petit singe au pays du j2ee  ---