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 127 128 129 130 131 132 133 134 135
|
import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Date;
import java.util.StringTokenizer;
public class MailTo {
public MailTo(){
}
public static boolean sendMail(Socket sock,
String localHost,String destinataire,String from,String subject,String message)throws IOException{
//connexion à la socket passée par paramètre
PrintWriter out = new PrintWriter(sock.getOutputStream());
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream())) ;
//on recoi la ligne qui nous dit que l'on est connecté
receive();
//on envoie la ligne qui indique de qui elle provient
send("HELO"+localHost);
//on nous dit qu'elle est bien reçu
receive();
//on envoie l'adresse de l'expediteur
send("MAIL FROM : <"+from+">");
//on nous dit que message reçu
//on envoie l'adresse du destinataire
send("RSPCT TP : <"+ destinataire +">");
//on recupère la reponse
receive();
//on envoie le 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);
//on envoie chaque ligne separament en utilisant /n
StringTokenizer tokenizer = new StringTokenizer(message,"\n");
//on utilise une boucle qui indique que tant qu'il y'a des lignes à envoyer
while (tokenizer.hasMoreTokens())
send(tokenizer.nextToken());
//pour finir l'envoie d'un il faut envoyer sur une ligne un seul point
send(".");
//on verifie que le mail a été accépté
receive();
//on quitte
send("quit");
//on nous dit que ca s'est quitté
receive();
// on ferme les flux
in.close();
out.close();
sock.close();
return true;
}
//methode qui reçoit les infos du serveur
private static void receive() throws IOException {
String line = in.readLine();
if (line != null) {
System.out.println(line);
System.out.println("\n");
}
}
//methode qui envoi 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();
}
private static BufferedReader in;
private static PrintWriter out;
public static void main(String[] args) throws UnknownHostException, IOException {
// TODO Auto-generated method stub
try{
Socket sock= new Socket("smtp.live.com", 25);
MailTo.sendMail(sock, "localHost", "menoulette@hotmail.com", "menoulette@hotmail.com", "salut", "salut ça marche");
}catch(Exception e){
e.printStackTrace();
}
}
} |
Partager