Envoie de mail en java - Java - Programmation
Marsh Posté le 23-12-2008 à 23:48:25
euh sans regarder le code, tu es sûr que l'adresse destinataire est valide ? toto@yahoo.fr
Marsh Posté le 24-12-2008 à 01:49:00
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);
Marsh Posté le 24-12-2008 à 15:11:00
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
Marsh Posté le 26-12-2008 à 10:19:07
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
Marsh Posté le 11-12-2008 à 21:22:55
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