Introduction aux concepts de base de l'e-mail
Le courrier électronique est utilisé pour transmettre la confiance et communiquer en ligne, et c'est l'un des services Internet les plus importants. Selon les statistiques, 30% des services Internet sont liés aux e-mails. Dans le même temps, nous ne pouvons pas nier qu'il joue un rôle important dans notre vie quotidienne, notre travail et notre bureau. Par exemple: de nombreux projets d'automatisation de bureau (OEA) ont la fonction d'envoyer des e-mails. Si vous utilisez également des méthodes manuelles telles que Outlook, cela ne convient pas. Dans cette ère à grande vitesse, nous devons fournir une efficacité de travail afin que le travail puisse être automatisé. Dans le même temps, de nombreux sites Web doivent également envoyer des e-mails: envoyer un e-mail de bienvenue aux utilisateurs nouvellement enregistrés avec leurs informations d'inscription, envoyer les dernières informations d'activité du site Web à tous les membres enregistrés par e-mail, etc.
Avant de commencer le développement de messagerie électronique: nous devons comprendre plusieurs concepts: système de messagerie, serveur de messagerie, e-mail, logiciel client, protocole de transmission par courrier et processus de transmission par e-mail.
Système de messagerie
Semblable aux services postaux traditionnels, le système de messagerie se compose d'un bureau de messagerie, d'un système d'e-mails d'envoi et de réception. Les expéditeurs et les destinataires envoient et reçoivent des e-mails par e-mail d'envoi et de réception de systèmes, qui sont en fait des programmes clients par courrier fonctionnant sur des ordinateurs. Le bureau d'e-mail joue un pont, qui est en fait un programme de serveur de messagerie exécutant sur le serveur. Le processus de traitement des e-mails est similaire à celui des services postaux.
Serveur de messagerie
Un serveur de messagerie est un appareil utilisé pour gérer les e-mails. Il existe un grand nombre de serveurs de messagerie disponibles sur Internet, tels que: 126, 163, hotmail ...
Les fonctions principales fournies par le serveur de messagerie:
1. Recevez des e-mails envoyés par les utilisateurs.
2. Transférer l'e-mail livré par l'utilisateur au serveur de messagerie cible.
3. Recevez les e-mails transmis par d'autres serveurs de messagerie et stockez les e-mails dans les e-mails de l'utilisateur qu'ils gèrent.
4. Fournir aux utilisateurs qui viennent lire des e-mails pour lire les e-mails.
Les serveurs de messagerie forment le cœur du système de messagerie. Chaque destinataire dispose d'une boîte aux lettres (boîte aux lettres) située sur un certain serveur de messagerie. La boîte aux lettres de Bob est utilisée pour gérer et maintenir des e-mails qui lui ont été envoyés. Un parcours typique d'un e-mail commence par l'agent utilisateur de l'expéditeur, le serveur de messagerie de l'expéditeur, est transféré sur le serveur de messagerie du destinataire, puis livré à l'adresse e-mail du destinataire. Lorsque Bob souhaite afficher les e-mails dans sa boîte aux lettres, le serveur de messagerie qui stocke la boîte aux lettres l'authentifiera avec le nom d'utilisateur et le mot de passe qu'il a fourni. Le serveur de messagerie d'Alice doit également faire face à la défaillance du serveur de messagerie de Bob. Si le serveur de messagerie d'Alice ne peut pas livrer immédiatement des messages de messagerie au serveur de messagerie de Bob, le serveur d'Alice les stocke dans la file d'attente de messages, puis tente de les livrer plus tard. Cette tentative est généralement effectuée toutes les 30 minutes environ: si la tentative ne réussit pas après plusieurs jours, le serveur supprime le message de la file d'attente du message et avertit l'expéditeur (c'est-à-dire Alice) avec un autre e-mail.
e-mail
Le courrier électronique est une méthode de communication moderne qui transmet et reçoit des informations les unes des autres via le réseau. Il s'agit d'une méthode de communication qui fournit un échange d'informations par des moyens électroniques et est le service le plus utilisé sur Internet. Grâce au système de messagerie du réseau, les utilisateurs peuvent contacter les utilisateurs d'Internet dans n'importe quel coin du monde à un prix très bas et d'une manière très rapide. Ces e-mails peuvent être de diverses manières telles que le texte, les images, le son, etc. En même temps, les utilisateurs peuvent obtenir un grand nombre de nouvelles gratuites et des e-mails spéciaux et réaliser une recherche d'informations faciles.
Le courrier électronique se compose de deux parties: enveloppe et contenu. Les enveloppes sont également appelées en-têtes de messagerie et le serveur de messagerie fournit du courrier en fonction de la confiance sur l'enveloppe. Le contenu s'appelle un corps de courrier, qui est utilisé pour fournir le contenu spécifique de l'e-mail.
L'adresse e-mail sur Internet est unique dans le monde entier, et son format est "Nom de messagerie @ Mail Server Name". Le domaine (Domain Mail) est l'unité de gestion de base du serveur de messagerie. Le service de messagerie est basé sur un domaine et chaque boîte aux lettres correspond à un seul utilisateur. Le nom de domaine du serveur de messagerie doit être un nom de domaine DNS enregistré et doit correspondre à l'enregistrement MX (commutateur de messagerie). DNS est utilisé pour résoudre les noms de domaine et les noms d'hôte en adresses IP. L'enregistrement MX pointe vers l'enregistrement de l'hôte du serveur de messagerie du nom de domaine et est dédié aux services de messagerie.
Logiciel de client de messagerie
Le logiciel du client de messagerie est responsable de la communication avec le serveur de messagerie, qui est principalement utilisé pour aider les utilisateurs à envoyer des e-mails au serveur SMTP et au serveur de messagerie POP3 / IMAP pour lire l'e-mail de l'utilisateur. Le logiciel du client de messagerie intègre généralement l'écriture, l'envoi et la réception de courriels.
E-mail
Plusieurs adresses e-mail peuvent être démarrées au-dessus de chaque serveur de messagerie, également appelées adresses électroniques. Il est similaire à une adresse postale réelle à travers laquelle les utilisateurs acceptent et envoient des e-mails d'autres.
L'obtention d'un e-mail nécessite une application sur le serveur de messagerie. Pour être précis, l'e-mail est en fait un compte que l'utilisateur applique sur le serveur de messagerie. Le serveur de messagerie conserve le courrier reçu dans l'espace de boîte aux lettres alloué à un compte, et l'utilisateur se connecte au serveur de messagerie via le nom d'utilisateur et le mot de passe qu'il demande à afficher les e-mails qui ont été reçus par l'adresse.
Processus de transmission par e-mail
Le système de messagerie est en mode client / serveur. La livraison par e-mail nécessite les 3 modules importants suivants:
UA (Mail User Agent, Mail User Agent): L'utilisateur traite le serveur de messagerie via. MUA est en fait le logiciel Client Mail.
MTA (agent de transfert de courrier, agent de transfert de courrier): Il est principalement responsable du traitement de tous les courriers reçus et envoyés, fournissant des services de livraison de courrier à MUA ou MTA, et à recevoir des courriers envoyés par d'autres MTA.
MDA (agent de livraison de courrier, agent de livraison de courrier): Il est responsable de la livraison locale du courrier. Lorsque le MTA décide d'envoyer un certain e-mail à l'utilisateur local, le MTA remet l'e-mail au programme MDA pour la distribution, c'est-à-dire qu'il est livré à l'utilisateur.
Le processus de transmission spécifique est le suivant:
1. L'expéditeur utilise MUA pour envoyer l'e-mail au MTA.
2. Après avoir reçu l'e-mail, le MTA détermine si le destinataire est un compte local. S'il s'agit d'un compte local, il sera remis au MDA à l'adresse e-mail du compte, complétez le processus d'envoi et passez à l'étape 5. Sinon, effectuez l'étape suivante.
3. MTA décide comment transmettre les e-mails en fonction de ses paramètres de transfert de relais de messagerie.
4. Le MTA de l'objectif final remettra le MDA à son traitement, et le MDA remetra l'e-mail à l'adresse e-mail du destinataire.
5. Le destinataire utilise MUA pour se connecter au serveur où l'adresse e-mail est située via le protocole POP / IMAP, et demande pour vérifier s'il y a des e-mails dans sa boîte de réception. S'il y a un e-mail, le MUA du destinataire sera transmis par l'intermédiaire.
Remarque: Le service d'accès par e-mail est invité à être un logiciel POP ou IMAP Server, pas le MTA qui a reçu l'e-mail. Les rôles des deux sont séparés.
Protocole de transfert de courrier
La transmission du service de messagerie utilise principalement les trois protocoles de réseau suivants
SMTP (protocole de transfert de courrier simple)
SMTP est un protocole de transfert de courrier simple. Le port TCP standard est de 25 ans. MUA envoie l'e-mail au MTA, et le MTA envoie l'e-mail au MTA suivant, qui doivent tous deux utiliser SMTP. L'objectif de SMTP est de livrer le courrier de manière fiable et efficace, il est indépendant du sous-système de livraison et ne nécessite qu'un seul canal qui garantit l'ordre des unités de données à transmettre.
SMTP est un protocole "unidirectionnel" qui ne peut pas être collecté par les utilisateurs à partir d'autres serveurs de messagerie. Il adopte lui-même le mode client / serveur. Le processus SMTP responsable de l'envoi de courrier est le client SMTP, et le processus SMTP responsable de la réception du courrier est le serveur SMTP. Un processus de communication SMTP complet comprend principalement trois processus: établir une connexion, livrer du courrier et libérer une connexion.
Établir une connexion: Tout d'abord, l'expéditeur envoie l'e-mail au cache de messagerie. Le client SMTP analyse régulièrement le cache de messagerie. Une fois qu'il y a un message, il établit une connexion TCP avec le serveur SMTP, puis envoie une commande HRLLO pour attacher le nom d'hôte de l'expéditeur.
Email de livraison: Le client SMTP utilise la commande Mail pour commencer à envoyer l'e-mail, qui fournit l'adresse de l'expéditeur; Exécute ensuite la commande RCPT et fournit l'adresse du destinataire; Exécute enfin la commande de données pour transférer le contenu des e-mails.
Libérez la connexion: une fois le courrier livré, le client SMTP envoie une commande OUT pour demander pour fermer la connexion TCP.
POP (accord de poste de poste)
Pop est un protocole de poste de poste. Le port TCP standard est 110. Principalement utilisé pour recevoir des e-mails. MUA se connecte à la boîte de réception utilisateur de MTA via le protocole POP pour lire ou télécharger un courrier utilisateur dans la boîte de réception.
Le protocole POP actuellement utilisé est POP3. POP3 utilise TCP comme protocole de transmission.
IMAP (Internet Information Access Protocol)
IMAP est un protocole d'accès aux messages Internet. Le port TCP standard est de 143, ce qui permet également à MUA de collecter le courrier du MTA. La version du protocole Target Ball IMAP est IMAP4.
POP et IMAP peuvent être utilisés pour collecter des e-mails, à la fois en mode client / serveur. La principale différence entre les deux est qu'ils récupèrent les e-mails différemment. Lors de l'utilisation de POP, l'e-mail réside sur le serveur. Une fois l'e-mail reçu, l'e-mail est téléchargé du serveur vers l'ordinateur de l'utilisateur. IMAP peut comprendre la situation où le courrier est stocké sur le serveur, et le courrier téléchargé est toujours coincé dans le serveur pour faciliter l'archivage et le partage du courrier.
Javamail
1. Introduction à Javamail
Javamail, comme son nom l'indique, fournit une interface de programmation aux développeurs pour traiter les e-mails. Il s'agit d'une API publiée par Sun pour gérer les e-mails. Il peut facilement effectuer certains transferts de courrier couramment utilisés. L'API Javamail est un package de développement standard fourni par Sun pour faciliter les développeurs Java pour implémenter des fonctions d'envoi et de réception par e-mail dans les applications. Il prend en charge certains protocoles de messagerie couramment utilisés, tels que SMTP, POP3 et IMAP. Lorsque les développeurs utilisent l'API Javamail pour rédiger un logiciel de traitement par e-mail, ils n'ont pas besoin de considérer les détails d'implémentation du protocole de messagerie sous-jacent, appelez simplement la classe API correspondante dans le package de développement Javamail.
2. Environnement de développement Javamail
Avant le développement de Javamail, vous devez importer le package JAR correspondant. Le package JAR peut être téléchargé à partir du site officiel d'Oracle: http://www.oracle.com/technetwork/java/javamail/index.html.
Une fois le téléchargement terminé, vous pouvez obtenir le répertoire suivant:
Parmi eux, Mail.jar: est le package de développement de base qui doit être utilisé pour développer des programmes Javamail.
Sous -direction lib: Ce répertoire contient 5 packages de développement de messagerie indépendants: Smtp.jar, Pop3.jar, imap.jar et mailapi.jar. Ces 5 fichiers JAR sont des emballages classifiés pour les fichiers Mail.jar. Parmi eux, MailAPI.jar résume la classe API qui crée du contenu de messagerie et des appels envoyant et recevant des développeurs ordinaires, tandis que les trois autres fichiers JAR encapsule le programme d'implémentation du service avec leurs noms correspondant au protocole. . Lors de la compilation des programmes Java Mail, vous n'avez besoin que du fichier mailapi.jar, mais au moment de l'exécution, vous devez avoir le programme d'implémentation de service sous-jacent du protocole de courrier correspondant. Si vous avez seulement besoin d'utiliser la fonction d'envoi de courrier dans l'application, vous ne pouvez installer que les deux fichiers smtp.jar et mailapi.jar. Si vous avez seulement besoin d'utiliser la fonction de réception du courrier, vous ne pouvez installer les deux fichiers JAR POP3.jar, imap.jar et mailapi.jar sans installer le fichier Mail.jar entier.
Le répertoire Lib est le suivant:
3. Introduction à l'API Javamail
L'API Javamail est généralement divisée en les trois catégories suivantes selon ses fonctions:
1. Créer et analyser l'API de contenu des e-mails. La classe de messages est l'API principale pour la création et l'analyse des e-mails. Son objet d'instance représente un e-mail.
2. L'API pour envoyer des e-mails. La classe de transport est la classe API de base pour envoyer des courriers. Son objet d'instance représente l'objet d'envoi de courrier qui implémente un certain protocole d'envoi de courrier, tel que le protocole SMTP.
3. API pour recevoir des e-mails. La classe de magasin est la classe API de base pour recevoir du courrier. Son objet d'instance représente l'objet de réception par e-mail qui implémente un certain protocole de réception par e-mail, tel que le protocole POP3.
Le flux de travail de Javamail est le suivant:
Dans ce flux de travail, les quatre objets, le message, la session, le transport et le magasin sont étroitement connectés pour envoyer et recevoir un e-mail. Nous avons seulement besoin de comprendre les fonctions et les fonctions de ces quatre API de base, connaître leurs relations de travail et leur flux de travail de messagerie, et nous pouvons facilement écrire Javamail. Pour les classes auxiliaires de Javamail, lorsque nous en avons besoin, nous pouvons suivre les indices et vérifier les documents pour résoudre le problème.
Introduction à l'API principale:
Message
La classe de messages est l'API principale pour la création et l'analyse du courrier, et son objet d'instance représente un e-mail. Lorsque le client envoie un e-mail, utilisez d'abord l'API par e-mail, encapsulez les données de messagerie créées dans l'objet Message, puis transmettez cet objet à l'API d'envoi e-mail pour l'envoyer. Lorsque le client reçoit l'e-mail, l'API de réception par e-mail installe les données de prix d'huile reçues dans l'objet d'instance de message et le client utilise l'API d'analyse par e-mail pour analyser les données e-mail reçues de cet objet.
Session
La classe de session est utilisée pour définir les informations sur l'environnement requises par l'ensemble de l'application, ainsi que pour collecter les informations de session pour le client afin d'établir une connexion réseau avec le serveur de messagerie, telles que le nom d'hôte, le numéro de port et le protocole d'envoi et de réception du courrier utilisé. L'objet de session construit des objets de magasin et de transport pour l'envoi et la réception de courriers en fonction de ces informations de session, et fournit une prise en charge des informations pour que le client crée des objets de message.
Transport
La classe de transport est la classe API de base pour envoyer des courriers. Son objet d'instance représente l'objet d'envoi de courrier qui implémente un certain protocole d'envoi de courrier, tel que le protocole SMTP. Une fois que le programme client a créé un objet Message, il n'a qu'à utiliser l'API d'envoi d'e-mails pour obtenir l'objet Transport, puis transmettre l'objet Message à l'objet Transport et appeler sa méthode d'envoi pour envoyer l'e-mail au serveur SMTP spécifié.
Magasin
La classe de magasin est la classe API de base pour recevoir du courrier. Son objet d'instance représente l'objet de réception du courrier qui implémente un certain protocole de réception de courrier, tels que les protocoles POP3 et IMAP. Lorsque le programme client reçoit le courrier, il n'a qu'à utiliser l'API de réception du courrier pour obtenir l'objet Store, puis d'appeler la méthode de réception de l'objet Store pour obtenir les données de messagerie à partir du serveur POP3 spécifié et encapsuler les données de messagerie dans l'objet de message représentant le courrier.
Iv. Exemples
classe publique Javamail_01 {public static void main (String [] args) lève l'exception {Properties props = new Properties (); props.setProperty ("mail.smtp.auth", "true"); props.setProperty ("mail.transport.protocol", "smtp"); Session session = session.getInstance (accessoires); session.setDebug (true); Message msg = new mimeMessage (session); MSG.SETSUSBject ("Ceci est un programme de test ..."); msg.setText ("Bonjour! Ceci est mon premier programme Javamail ---- Chen Ming"); msg.setFrom (nouveau InternetAddress ("****** @ 163.com")); Transport Transport = Session.getTransport (); transport.connect ("smtp.163.com", 25, "*********", "************"); transport.sendMessage (msg, nouvelle adresse [] {new InternetAddress ("[email protected]")}); System.out.println ("e-mail envoyé avec succès ..."); transport.close (); }}