Mail Et Servlet: Université Paris 7 M2 Ii Protocole Internet
Mail Et Servlet: Université Paris 7 M2 Ii Protocole Internet
Mail Et Servlet: Université Paris 7 M2 Ii Protocole Internet
M2 II
Protocole Internet
TP2
Mail et servlet
1 Protocole SMTP
1. Le protocole SMTP est définit dans la RFC 821 (mise à jour dans la RFC
2821). Le format des messages est spécifié dans la RFC 822.
Consultez ces RFC et répondez aux questions suivantes:
2 Programmation Java
Java propose une JavaMail API pour manipuler le courrier.
import java.util.*;
import javax.mail.*;
// les 2 classes suivantes sont utilisées pour
// le courrier electronique Internet
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
try {
1
// emetteur du message (MAIL FROM:) le mail a pour emetteur Pere Noel
Address emetteur = new InternetAddress("pppppp@liafa.jussieu.fr",
"Pere Noel");
// recepteur du message (RCPT TO:)
Address receveur = new InternetAddress("cd@liafa.jussieu.fr");
Properties props = new Properties();
// choix du serveur smtp
props.put("mail.host", "ouindose.informatique.univ-paris-diderot.fr");
// demarrage d’une session de courrier
Session mailConnection = Session.getInstance(props, null);
//Emission du message
Transport.send(msg);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
import java.util.Date;
import java.util.Properties;
import javax.mail.*;
2
String username = "etudiant";
String provider = "pop3";
try {
// ligne 1
Session session = Session.getDefaultInstance(props,null);
Store store = session.getStore(provider);
// ligne 2
store.connect(host, username, password);
System.out.println("connection reussie");
Folder inbox = store.getFolder("INBOX");
if (inbox == null) {
System.out.println("No INBOX");
System.exit(1);
}
inbox.open(Folder.READ_ONLY);
// Ferme la connexion
// sans enlever les messages du serveur
inbox.close(false);
store.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
}
3
A titre indicatif, on propose une sous classe de Authentificator: MailAuthentificator
qui s’utiliserait ainsi partir du programme précédent:
// on enlève la ligne 0
// au lieu de la ligne 1
Session session = Session.getDefaultInstance(props,
new MailAuthenticator(username));
...
//au lieu de la ligne 2
store.connect(host, null, null);
Classe MailAuthentificator:
import javax.mail.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public MailAuthenticator(String u) {
username = new String(u);
Container pane = passwordDialog.getContentPane();
pane.setLayout(new GridLayout(2, 1));
JPanel p = new JPanel();
p.add(passwordLabel);
p.add(passwordField);
p.add(okButton);
pane.add(p);
passwordDialog.pack();
ActionListener al = new HideDialog();
okButton.addActionListener(al);
passwordField.addActionListener(al);
}
4
public PasswordAuthentication getPasswordAuthentication() {
passwordDialog.show();
String password = new String(passwordField.getPassword());
passwordField.setText("");
return new PasswordAuthentication(username, password);
}
}
3 Servlet
1. On considère une application web. Le fichier index.jsp contient 2 bou-
tons et un champ texte où on saisie le nom de l’utilisateur l’activation d’un
de ces boutons appelle une servlet travail.java, mappée sur travail.html
, qui affiche un message "on va envoyer du courrier pour nom" ou "on va
lire le courrier de nom "
index.jsp
Classe travail.java
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
5
public class travail extends HttpServlet {
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet NewServlet2</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet pour le courrier " + request.getContextPath ()
+ "</h1>");
out.println("</body>");
out.println("</html>");
String bouton =request.getParameter("bouton");
String nom=request.getParameter("nom");
if (bouton.equals("Envoie"))out.println("on va envoyer du
courrier pour "+nom);
if (bouton.equals("Lire"))out.println("on va lire le courrier
de "+nom );
} finally {
out.close();
}
}
6
}
<servlet>
<servlet-name>travail</servlet-name>
<servlet-class>travail</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>travail</servlet-name>
<url-pattern>/travail.html</url-pattern>
</servlet-mapping>
3.
2. Au lieu d’afficher le message "on va lire le courrier pour nom ", on va
lire le courrier. La servlet travail.java passe le contrôle à la servlet
lect.java mappée sur lect.html:
if (bouton.equals("Lire")){
RequestDispatcher disp ;
disp=request.getRequestDispatcher("/lect.html");
disp.forward(request,response);
}