Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1425 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Envoie de mail en java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Envoie de mail en java

n°1825831
figosat
Posté le 11-12-2008 à 21:22:55  profilanswer
 

Bonjour,
J'ai écrit un programme en java pour l'envoie de mail automatiser. J'ai installer un serveur SMTP sur ma machine en local. Le soucie est lors de l'envoie du mail j'ai une erreur de la nature suivante : "550 Invalid recipient: toto@yahoo.fr".  
 
Le code source :
----------------
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Date;
import java.util.StringTokenizer;
 
public class MailTo {
 
 private static BufferedReader in;
 private static PrintWriter out;
 
 public MailTo() {
 }
 
 public static boolean sendMail(Socket sock, String localHost,
   String Destinataire, String from, String nomFrom, String subject, String message)
   throws IOException {
  // connection a la socket passe par param
  out = new PrintWriter(sock.getOutputStream());
  in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
  // on recoit la ligne qui nous dit que l'on est connecté
  receive();
  // on envoie la premiere ligne qui indique de qui elle provient
  send("HELO " + localHost);
  // on nous dit qu'elle a bien etait recu
  receive();
  // on envoie l'adresse de l'expediteur
  send("MAIL FROM: <" + from + ">" );
  // on nous dit que ca c'est bien passe
  receive();
  // on envoie l'adresse du destinataire
  send("RCPT TO: <" + Destinataire + ">" );
  // on recupere la reponse
  receive();
  // on passe au chose serieuse pour commencer l'envoi du corps
  send("DATA" );
  // on verifie que le serveur soit pret
  receive();
  // on envoie plusieurs balises utiles
  send("Subject: " + subject);
  send("Date: " + new Date());
  send("Reply-To:" + from);
  send("To: " + Destinataire);
  send("From:\""+nomFrom+"\"<" + from+">" );
  send("Content-Type: text/plain; charset=\"us-ascii\"\r\n" );
  // on envoie cahque ligne separement en utilisant \n comme delimitateur
  StringTokenizer tokenizer = new StringTokenizer(message, "\n" );
  // la ligne ci dessous se traduit par : tant qu'il y a encore des ligne
  while (tokenizer.hasMoreTokens())
   send(tokenizer.nextToken());
  // pour finir l'envoie d'un mail il faut envoyer sur une ligne un seul
  // point
  send("." );
  // on verifie que le mail a etait accepté
  receive();
  // on quitte
  send("QUIT" );
  // on nous dit que ca a bien quitté
  receive();
  // on ferme les flux
  in.close();
  out.close();
  sock.close();
 
  return true;
 }
 
 // methode qui recoit les informations du servveur
 private static void receive() throws IOException {
  String line = in.readLine();
  if (line != null) {
   System.out.println(line);
   System.out.println("\n" );
  }
 
 }
 
 // methode qui envoie des infos au serveur
 private static void send(String s) {
  System.out.print(s);
  System.out.print("\r\n" );
  System.out.flush();
  out.print(s);
  out.print("\r\n" );
  out.flush();
 
 }
 
 public static void main(String[] args) {
  try {
   Socket sock = new Socket("localhost",25);
   MailTo.sendMail(sock,"localhost","toto@yahoo.fr","tata@yahoo.fr","dupont stéphane","mon sujet","mon message" );
  } catch (Exception e) {
   System.err.println("erreur : "+e);
  }
   
 }
 
}


Message édité par figosat le 12-12-2008 à 05:41:18
mood
Publicité
Posté le 11-12-2008 à 21:22:55  profilanswer
 

n°1825901
figosat
Posté le 12-12-2008 à 05:41:38  profilanswer
 

help please !!!

n°1826010
figosat
Posté le 12-12-2008 à 11:48:16  profilanswer
 

:hello:  

n°1826411
figosat
Posté le 13-12-2008 à 12:14:27  profilanswer
 

Aucun geek pour m'aider  :whistle:

n°1831025
Zipo
Ours bipolaire
Posté le 23-12-2008 à 23:48:25  profilanswer
 

euh sans regarder le code, tu es sûr que l'adresse destinataire est valide ? toto@yahoo.fr


---------------
- mon feed-back
n°1831057
pop-pan
yay!
Posté le 24-12-2008 à 01:49:00  profilanswer
 

sans regarder le code non plus. elle sort d'ou la ligne?
 exception? quelle ligne? ou simplement ack normal du smtp qui refuse l'adresse pour relay?
 
sinon tu as aussi simple et plus lisible :
oEmail c'est juste un conteneur pour stocker proprement les proerties du message  les getters renvoient des strings (escapées)
 
 
      // Define message
   MimeMessage oMessage  = new MimeMessage(oMailSession);
   oMessage.setSentDate(DateTools.getCurrentDate());
   
   InternetAddress oFrom  = new InternetAddress(oEmail.getFrom());
   InternetAddress oTo  = new InternetAddress(oEmail.getTo());
   
   oMessage.setSubject(oEmail.getObject());
   oMessage.setContent(oEmail.getContent(), "text/html" );
   
   oMessage.addRecipient(RecipientType.TO, oTo);
   oMessage.setFrom(oFrom);
   
   Transport.send(oMessage);


---------------
[VDS] rail vesa, bras ecran, support TV / [ACH] des machins
n°1831350
kirdape
Posté le 24-12-2008 à 15:11:00  profilanswer
 

figosat, avec ce que je t'ai envoyé, tu devrais pouvoir le faire, à condition d'avoir un serveur évidemment  ;)  
 
Pour rappel : http://www.jmdoudoux.fr/java/dej/chap045.htm  :o

n°1831580
figosat
Posté le 26-12-2008 à 10:19:07  profilanswer
 

oué merci kirdape, je l'ai bien reçu. 9a marche très bien. En fait c'était un problème de serveur SMTP, j'avais mis "localhost" alors qu'il fallait mettre "smtp.free.fr".
 
Merçi à tous


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Envoie de mail en java

 

Sujets relatifs
Envoyer un mail *facilement* en ASP ?Diagramme de classes vers java
[PHP/MySQL/JAVA] Présentation d'un site innovant. Vos réactionsjava photoshop scipt
Relier JAVA à base de donnée MySQL distante / JDBCMail supprimé par serveur smtp ?
syntaxe pour passage variables Java -> FlashValeurs reportées dans un formulaire d'envoi mail
Problème affichage applications javaenvoyer formulaire sur une adresse e-mail
Plus de sujets relatifs à : Envoie de mail en java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR