Vue Architecturale de Java Mail API
Si vous êtes un développeur Java et souhaitez intégrer la
fonctionnalité de messagerie dans votre application, mais vous n’avez jamais
écrit quoi que ce soit lié à la messagerie auparavant. Voici donc un bon
endroit pour commencer avec la programmation de courrier électronique en Java.
Comme toute autre technologie Java, nous devons prendre une bibliothèque et comprendre son API avant d’écrire et de tester du code réel. Bien que le JRE/JDK n’inclue pas d’API intégrée pour le courrier électronique, Oracle fournit un package optionnel appelé JavaMail qui est probablement le framework le plus populaire pour la programmation de courrier électronique avec la technologie Java.
Le JavaMail fait donc partie de la pile technologique de JavaEE.
Cela veut simplement dire que c'est une extension au JDK qui n'est donc pas fournie avec Java SE. Elle est intégrée à Java EE.
JavaMail est une API qui permet d'utiliser le courrier électronique (e-mail) dans une application écrite en Java (application cliente, applet, servlet, EJB, ... ). Son but est d'être facile à utiliser, de fournir une souplesse qui permette de la faire évoluer et de rester le plus indépendant possible des protocoles utilisés.
Le courrier électronique repose sur le concept du client/serveur. Ainsi, l'utilisation d'e-mails requiert deux composants :
èun
client de mails (Mail User Agent : MUA) tel que Outlook, Messenger, Eudora, ...
èun
serveur de mails (Mail Transport Agent : MTA) tel que SendMail
Les
clients de mails s'appuient sur un serveur de mails pour obtenir et envoyer des
messages. Les échanges entre clients et serveurs sont normalisés par des
protocoles particuliers.
Les classes et interfaces sont regroupées dans quatre packages : javax.mail, javax.mail.event, javax.mail.internet, javax.mail.search.
Les principaux protocoles
Étant donné que JavaMail est basé sur des protocoles de messagerie standard tels que SMTP, IMAP et POP3, il est recommandé d’avoir une compréhension de base du fonctionnement de ces protocoles, ainsi que des avantages et des inconvénients de chaque protocole. Cela vous aiderait à implémenter votre code plus efficacement. Vous êtes donc libre de se rendre sur Wikipédia et consulter les liens suivants: SMTP, IMAP,POP, etc.
Voici ce que je vous conseille de retenir pour la compréhension pratique de cet article:
SMTP est l'acronyme de Simple Mail Transport Protocol. Ce protocole défini par la recommandation RFC 821 permet l'envoi de mails vers un serveur de mails qui supporte ce protocole.
POP est l'acronyme de Post Office Protocol. Ce protocole défini par la recommandation RFC 1939 permet la réception de mails à partir d'un serveur de mails qui implémente ce protocole. La version courante de ce protocole est 3. C'est un protocole très populaire sur Internet. Il définit une boîte aux lettres unique pour chaque utilisateur. Une fois que le message est reçu par le client, il est effacé du serveur.
IMAP est l'acronyme de Internet Message Acces Procol. Ce protocole défini par la recommandation RFC 2060 permet aussi la réception de mails à partir d'un serveur de mails qui implémente ce protocole. La version courante de ce protocole est 4. Ce protocole est plus complexe car il apporte des fonctionnalités supplémentaires : plusieurs répertoires par utilisateur, partage de répertoires entre plusieurs utilisateurs, maintien des messages sur le serveur, etc .
NNTP est l'acronyme de Network News Transport Protocol. Ce protocole est utilisé par les forums de discussions (news).
1 2 3 4 5 | < dependency > < groupId >com.sun.mail</ groupId > < artifactId >javax.mail</ artifactId > < version >1.6.2</ version > </ dependency > |
1 2 | Message msg = new MimeMessage(session); msg.setText(message); |
1 2 | Message msg = new MimeMessage(session); msg.setContent(message, "text/html" ); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Message message = new MimeMessage(session); Multipart multipart = new MimeMultipart(); // creates body part for the message MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(message, "text/html" ); // creates body part for the attachment MimeBodyPart attachPart = new MimeBodyPart(); // code to add attachment...will be revealed later // adds parts to the multipart multipart.addBodyPart(messageBodyPart); multipart.addBodyPart(attachPart); // sets the multipart as message's content message.setContent(multipart); |
1 2 3 4 5 6 7 8 9 | // JavaMail 1.3 MimeBodyPart attachPart = new MimeBodyPart(); String attachFile = "E:/Documents/nomFichierAudio.mp4" ; DataSource source = new FileDataSource(attachFile); attachPart.setDataHandler( new DataHandler(source)); attachPart.setFileName( new File(attachFile).getName()); multipart.addBodyPart(attachPart); |
1 2 3 4 5 | // JavaMail 1.4 MimeBodyPart attachPart = new MimeBodyPart(); String attachFile = "E:/Documents/nomFichierAudio.mp4" ; attachPart.attachFile(attachFile); multipart.addBodyPart(attachPart); |
1 2 | MimeBodyPart bodyPart = new MimeBodyPart(); bodyPart.setContent(htmlMessage, "text/html" ); |
1 2 3 | String htmlMessage = "<html>Hi there,<br>" ; htmlMessage += "See this cool pic: <img src=\"cid:kiloAbcXyz123\" />" ; htmlMessage += "</html>" ; |
1 2 3 4 5 | MimeBodyPart imagePart = new MimeBodyPart(); imagePart.setHeader( "Content-ID" , "kiloAbcXyz123" ); imagePart.setDisposition(MimeBodyPart.INLINE); // attach the image file imagePart.attachFile(imageFilePath); |
0 Commentaires
MESSAGES VENUS