Cet article est le douzième article de la série VHR, avec l'adresse du projet https://github.com/lenve/vhr
L'envoi par e-mail est également un problème courant. Bien que le code soit simple, de nombreux amis ne comprennent pas très bien le processus, ils prévoient donc de vous parler de ce sujet.
Contrat de courrier électronique
Nous entendons souvent divers protocoles d'e-mails, tels que SMTP, POP3 et IMAP. Alors, quelles sont les fonctions de ces protocoles et quelles sont les différences? Discutons d'abord de ce problème.
SMTP est un protocole de couche d'application basé sur TCP / IP. Son statut est quelque peu similaire à HTTP. Le numéro de port par défaut du serveur SMTP est de 25 ans. Voyant cela, les amis peuvent penser que puisque le protocole SMTP est basé sur le protocole de couche d'application TCP / IP, puis-je également envoyer un e-mail via Socket? La réponse est oui.
Dans la vie, nous devons passer par les étapes suivantes:
1. Xiao Wang de Shenzhen a d'abord livré l'e-mail au bureau de poste de Shenzhen
2. Le bureau de poste de Shenzhen remetra du courrier au bureau de poste de Shanghai
3. Xiao Zhang de Shanghai est venu au bureau de poste pour récupérer le courrier
Il s'agit d'une version réduite du processus d'envoi de courrier dans la vie. Ces trois étapes peuvent correspondre séparément à notre processus d'envoi d'e-mail. Supposons que les courriels soient envoyés de [email protected] à [email protected]:
[email protected] fournit d'abord l'e-mail au serveur de messagerie de Tencent
2. Le serveur de messagerie de Tencent fournit notre courrier au serveur de messagerie de NetEase
[email protected] Connectez-vous au serveur de messagerie de NetEase pour afficher les e-mails
La livraison des e-mails est à peu près ce processus, qui implique plusieurs protocoles. Jetons un coup d'œil séparément.
Le nom complet du protocole SMTP est un protocole de transfert de courrier simple, qui est traduit par un simple protocole de transfert de courrier. Il définit les règles de communication entre le logiciel Client Mail et le serveur SMTP et le serveur SMTP. En d'autres termes, le processus de livraison des e-mails au serveur SMTP de Tencent utilise d'abord le protocole SMTP, puis le serveur SMTP de Tencent fournit des e-mails au serveur SMTP de NetEase utilise toujours le protocole SMTP, qui est utilisé pour recevoir des e-mails. Le nom complet du protocole POP3 est le protocole de poste, qui est traduit par protocole de poste de poste. Il définit les règles de communication entre le client de messagerie et le serveur POP3. Alors, dans quel scénario ce protocole sera-t-il utilisé? Lorsque l'e-mail arrive sur le serveur SMTP de NetEase, l'utilisateur [email protected] doit se connecter au serveur pour afficher l'e-mail. Pour le moment, l'accord est utilisé: le fournisseur de services de messagerie fournira à chaque utilisateur un espace de stockage de messagerie spécial. Une fois que le serveur SMTP a reçu l'e-mail, il enregistre l'e-mail dans l'espace de stockage des e-mails de l'utilisateur correspondant. Si l'utilisateur souhaite lire l'e-mail, il doit être terminé via le serveur de messagerie POP3 du fournisseur de services de messagerie. Enfin, certains amis ont peut-être entendu parler du protocole IMAP, qui est une extension du protocole POP3, avec des fonctions plus fortes et des fonctions similaires. Je ne le répéterai pas ici.
Préparation pour envoyer des e-mails QQ
Tout d'abord, nous devons nous connecter à la version Web de messagerie QQ et cliquer sur le bouton Paramètres ci-dessus:
Puis cliquez sur l'onglet Comptes:
Trouvez l'option pour activer POP3 / SMTP dans l'onglet Compte, comme suit:
Cliquez pour activer les fonctions pertinentes. Le processus d'activation nécessite une vérification du numéro de téléphone mobile. Suivez simplement les étapes et n'élaborez pas. Une fois qu'il est activé avec succès, vous pouvez obtenir un code d'autorisation, enregistrer le numéro et l'utiliser pendant un certain temps.
Ensuite, nous avons besoin du package Javaxmail. Les amis peuvent le télécharger directement dans Maven Central Warehouse. Je n'irai pas aux détails suivants ici.
envoyer
Email simple
Si nous n'envoyons qu'un texte simple, la méthode d'envoi sera relativement simple. L'ensemble du processus peut être divisé en trois étapes comme suit:
Étape 1: Construisez l'environnement de base du serveur de messagerie SMTP
Properties Properties = New Properties (); Properties.SetProperty ("Mail.host", "smtp.qq.com"); Properties.SetProperty ("Mail.transport.protoCol", "Smtp"); Properties.SetProperty ("Mail.Smtp.Auth", "True"); Properties.SetProperty ("Mail.smtp.socketfactory.class", "javax.net.ssl.sslsocketfactory"); Properties.SetProperty ("Mail.smtp.port", "465"); session session = session.getDefaultInstance (Properties); session.setDebug (true);Étape 2: Construisez l'e-mail
MimeMessage mimeMessage = new MimeMessage (session); mimeMessage.addrecicipients (message.recipentType.to, "[email protected]"); // Définissez le destinataire mimeMessage.Addrecicipients (Message.recicipienttype.cc, "[email protected]"); // cc mimeMessage.setFrom ("[email protected]"); // Email Sender mimeMessage.SetSubject ("Test Email Subject"); // Sujet e-mail mimeMessage.SetContent ("Hello, This Is Test Courriel", "Text / Html; Stangset = UTF-8"); //
Étape 3: Envoyer un e-mail
Transport Transport = Session.getTransport (); Transport.Connect ("Smtp.qq.com", "[email protected]", "Le code d'autorisation vient de s'appliquer"); Transport.SendMessage (MIMEMessage, mimeMessage.getAllRecipients ()); // Envoyer un e-mail, le second paramètre est le destinataire Transport.close ();E-mails complexes
Lors de l'envoi de courriels complexes, les première et troisième étapes sont les mêmes. Seule la deuxième étape est plus gênante pour construire des e-mails. Ensuite, permettez-moi de vous démontrer un e-mail qui envoie une image et un texte + deux pièces jointes. Pour envoyer des e-mails complexes, vous devez d'abord être familier avec trois concepts, comme suit:
1.MimeMessage: cette classe est un e-mail qui peut comprendre les types de mime et les en-têtes.
2.MIMEMULPART: Cette classe définit les méthodes pour ajouter, supprimer et obtenir différentes parties de l'e-mail
3.MimeBodyPart: Cet objet représente une partie du contenu d'un objet MimeMessage. Chaque MIMEBODYPART est considéré comme ayant deux parties: le type MIME et le contenu correspondant à ce type
Le processus complet de génération de messagerie est le suivant (voir ci-dessus pour les première et troisième étapes):
MimeMessage mimeMessage = new MimeMessage (session); mimeMessage.addrecicipients (message.recipentType.to, "[email protected]"); // Définissez le destinataire mimeMessage.Addrecicipients (Message.recicipienttype.cc, "[email protected]"); // cc mimeMessage.setFrom ("[email protected]"); // Email Sender mimeMessage.SetSubJe MIMEBODYPART (); // Créer la pièce jointe 1MIMEBODYPART PIOT2 = NEW MIMEBODYPART (); // Créer la pièce jointe 2MIMEBODYPART Contenu = new MIMEBODYPART (); // Créer le corps de messagerie mixte.AddbodyPart (Catty1); // Ajouter la pièce jointe un au corps de message MIME MIME Body Mixed.AddBodyPart (Content); // Ajoutez le corps au corps de message FiledAdataSource FDS1 = new FileDataSource (nouveau fichier ("c: //users//sang//desktop//1.png")); // construire la source de données de la pièce jointe One Datahandler DH1 = New Datahandler (FDS1); // attach1.setDatahandler (dh1); // définit la source de données de la pièce jointe 1 jointe1.setFileName ("1.png"); // définir le nom de fichier de la pièce jointe 1 // le fonctionnement de la pièce jointe 2 est similaire à la pièce jointe 1, donc nous ne commenterons pas chacun ici. FiledAdAtaSource FDS2 = new FileDataSource (nouveau fichier ("c: // utilisateurs // Sang // Desktop // Blog Note.xlsx")); Datahandler DH2 = nouveau DataHandler (FDS2); PIET2.SetDatahandler (DH2); Pix2.SetFileName (When Mimeutility.EncodeteXt ("Blog Note.xlsx")); Nom, s'il y a du chinois, vous pouvez le coder via la méthode d'encodétext dans la classe de mimeutility pour éviter les mimemMultuparpart bêtises bodyMimEmulTipart = new mimeMultustr ("lié"); // définir le type de mime du contenu corporel. MIMEBODYPART (); // Html partie du bodyPart.setContent ("<h1> Bonjour à tous, il s'agit d'un e-mail de test <img src = 'cid: 2.png' // </h1>", "text / html; charset = utf-8"); mimebodypart picPart = newbodyPart (); // la partie du jeu du corps du corps Nouveau Datahandler (nouveau FileDataSource ("c: //users//sang//desktop//2.png")); picPart.setDatahandler (datahandler); picPart.setContendId ("2.png"); // ajouter les parties HTML et l'image du corps à BodyMimEmultupar.AddbodyPart (BodyPart); BodyMimEmultupart.AddBodyPart (PicPart); mimeMessage.SaveChanges ();
Ok, il est tout simple d'envoyer des e-mails QQ par Java Mail. Quant à d'autres choses telles que 163, Sina, etc., le style d'écriture est similaire, je ne le développerai pas ici.
Résumer
Ce qui précède est le code d'implémentation de la fonction e-mail QQ dans Springboot qui vous est présenté par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!