code: private Session getSession() throws NamingException {
  		if (session == null) {
  			synchronized (this) {
  				try {
  					session = (Session) lookupFromJndiName();
  				} catch (final ClassCastException e) {
  					// la déclaration d'une session mail dans un contexte tomcat par exemple
  					// nécessite d'avoir les jars javamail et activation dans le répertoire lib
  					// du serveur, mais si ces 2 jars sont aussi dans WEB-INF/lib de la webapp
  					// pour une utilisation directe sans session mail alors on obtient ClassCastException
  					// de javax.mail.Session en javax.mail.Session.
  					// Pour pallier cela, on contourne ClassCastException en récupérant
  					// les propriétés dans la session mail du serveur sans faire de cast
  					// puis on recrée une session mail locale avec les jars de la webapp.
  					session = Session.getInstance(getPropertiesFromSession(lookupFromJndiName()));
  				}
  			}
  			fromAddress = InternetAddress.getLocalAddress(session);
  		}
  		return session;
  	}
docs: Instanciation à la demande car cela peut être long en particulier si le serveur de mail est loin.
  @return Session
  @throws NamingException e