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
| import java.io.*;
import java.net.Socket;
import java.util.Date;
import java.util.StringTokenizer;
public class MailIo {
public MailIo() {
}
public static boolean sendMail(Socket sock, String localHost, String Destinataire, String from, 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 recoi la ligne qui nous dit que l'on est connecté
receive();
// on envoi la premiere ligne qui indique de qui elle provien
send("HELO " + localHost);
// on nous dit qu'elle a bien etait recu
receive();
// on envoi l'adresse de l'expediteur
send("MAIL FROM: <" + from + ">");
// on nous dit que ca c'est bien passe
receive();
// on envoi 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 envoi plusieur balise utile
send("Subject: " + subject);
send("Date: " + new Date());
send("Reply-To:" + from);
send("To: " + Destinataire);
// on envoi 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'envoi d'un mail il faut envoi sur une ligne un seul point
send(".");
// on verifie que le mail a etait accepte
receive();
// on quitte
send("QUIT");
// on nous dit que ca a bien quitter
receive();
// on ferme les flux
in.close();
out.close();
sock.close();
return true;
}
// methode qui recoit les information 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 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;
}
//
String sub = request.getParameter("objet");
String msg = request.getParameter("msg");
String Host = "10.1.1.2";
Socket sock = new Socket("smtp.menara.ma", 25);
MailIo.sendMail(sock, host, client@msn.fr , ksrdev@hotmail.com, sub, msg); |
Partager