Javaの実戦的なswingに基づくQQメールの送受信機能が実現されます。


一、電子メールの詳細
  • 自分の電子メールは[email protected]相手のメールは[email protected]
  • 私たちは書類を作成して相手の書類を記入し、送信をクリックして、これらの電子メールを送りました。
    これらの電子メールはMUA:Mail User Agentと呼ばれる。メールユーザエージェント。
  • メールを送る時は、直接相手のコンピュータに届くのではなく、MTA:Mail Transfer Agentに送ってください。網易
  • EmailがMTAに到着したら、MTAはEmailをメールの最終目的MDA:Mail Delivery Agentに配達します。どのようにサーバーに保存しますか?私達はこの長期保存のところをメールボックスといいます。
  • Emailは直接相手のコンピュータに到着しません。コンピュータが起動するとは限らないので、起動は相手がメールを取る必要がありません。MDAを通じてMDAから自分のコンピュータにメールを取りに行かなければなりません。
    上記のような概念があります。プログラムを作成してファイルを送受信します。本質的には:
    1.MUAを作成してMTAにメールを送ります。
    2.MUAを作成してMDAからメールを受信する
    メールを送る時、MUAとMTAで使うプロトコルはSMTP:Simple Mail Transfer Protocolです。後ろのMTAから他のMTAまでもSMTPプロトコルを使います。
    メールを受け取る時、MUAとMDAで使うプロトコルは二つあります。POP:Post Office Protocol、つまりPOP 3;IMAP:インターネットメッセージングAccess Protocol
    二、メール送信
    
    import com.sun.mail.util.MailSSLSocketFactory;
    
    import javax.swing.*;
    import javax.mail.*;
    import javax.mail.internet.InternetAddress;
    import javax.mail.internet.MimeMessage;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Properties;
    /**
     *     
     *
     * @author ltl
     */
    public class SendEmailManger extends Thread {
        private String mailAdr;//  
        private String content;//     
        private String subject;//     
        public SendEmailManger(String mailAdr, String subject, String content) {
            super();
            this.mailAdr = mailAdr;
            this.subject = subject;
            this.content = content;
        }
        @Override
        public void run() {
            super.run();
            try {
                sendMail(mailAdr, subject, content);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        private void sendMail(String mailAdr, String subject, String content) throws Exception {
            //            
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            final Properties props = new Properties();
            //   SMTP    ,        
            props.put("mail.transport.protocol", "smtp");
            props.put("mail.smtp.auth", "true");
            props.put("mail.smtp.host", "smtp.qq.com");
            // smtp     、   ;   smtp  
            props.setProperty("mail.debug", "true");
            props.put("mail.user", "     qq  ");
            props.put("mail.password", "     QQ   ");
            //       ,  ssl     true,    530  
            props.put("mail.smtp.ssl.enable", "true");
            props.put("mail.smtp.ssl.socketFactory", sf);
            Authenticator authenticator = new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    //    、  
                    String userName = props.getProperty("mail.user");
                    String password = props.getProperty("mail.password");
                    return new PasswordAuthentication(userName, password);
                }
            };
            //            ,      
            Session mailSession = Session.getInstance(props, authenticator);
            //       
            MimeMessage message = new MimeMessage(mailSession);
            //      
            try {
                InternetAddress form = new InternetAddress(props.getProperty("mail.user"));
                message.setFrom(form);
                //      
                InternetAddress to = new InternetAddress(mailAdr);
                message.setRecipient(Message.RecipientType.TO, to);
                //       
                message.setSubject(subject);
                //         
                message.setContent(content, "text/html;charset=UTF-8");
    
                //     
                Transport.send(message);
            } catch (MessagingException e) {
                e.printStackTrace();
            }
        }
        public static void main(String[] args) {
            // 1.         (  )
            JFrame jf = new JFrame("    ");
            jf.setSize(500, 500);
            jf.setLocationRelativeTo(null);
            jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            // 2.       (    )
            JPanel panel = new JPanel(null);
    
            // 3.         (  ),           
    
            JLabel jla1 = new JLabel("    : ");
            jla1.setLocation(50,50);
            jla1.setSize(100, 50);
            jla1.setFont(new Font("123", 5, 20));
    
     final  JTextField textField = new JTextField(8);
            textField.setFont(new Font("mailAdr", Font.PLAIN, 20));
            textField.setLocation(150,50);
            textField.setSize(250, 50);
    
            JLabel jla2 = new JLabel("    : ");
            jla2.setLocation(50,150);
            jla2.setSize(100, 50);
            jla2.setFont(new Font("123", 5, 20));
    
    final   JTextField textField1 = new JTextField(8);
            textField1.setFont(new Font("subject", Font.PLAIN, 20));
            textField1.setLocation(150,150);
            textField1.setSize(250, 50);
    
            JLabel jla3 = new JLabel("    : ");
            jla3.setLocation(50,250);
            jla3.setSize(100, 50);
            jla3.setFont(new Font("123", 5, 20));
    
    final   JTextField textField3 = new JTextField(8);
            textField3.setFont(new Font("content", Font.PLAIN, 20));
            textField3.setLocation(150,250);
            textField3.setSize(250, 50);
    
            JButton btn = new JButton("    ");
            btn.setLocation(50,350);
            btn.setSize(100, 50);
            btn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
                    SendEmailManger d = new SendEmailManger(textField.getText(), textField1.getText(), textField3.getText());
                    d.start();
    
                }
            });
    
            panel.add(jla1);
            panel.add(jla2);
            panel.add(jla3);
            panel.add(textField);
            panel.add(textField1);
            panel.add(textField3);
            panel.add(btn);
    
    
            // 4.                        
            jf.setContentPane(panel);
    
            // 5.     ,            ,   jf.setVisible(true)              。
            jf.setVisible(true);
        }
    
    }
    
    三、メール受信
    
    import com.sun.mail.util.MailSSLSocketFactory;
    import com.sun.org.apache.bcel.internal.generic.NEW;
    
    import javax.mail.*;
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.util.Date;
    import java.util.Properties;
    
    
    
    public class ReceiveEmailManger extends Thread {
    
        public static void main(String[] args){
    
    // 1.         (  )
            JFrame jf = new JFrame("    ");
            jf.setSize(500, 500);
            jf.setLocationRelativeTo(null);
            jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            JPanel panel = new JPanel(null);
    
            JLabel jla2 = new JLabel("  : ");
            jla2.setLocation(50,50);
            jla2.setSize(150, 50);
            jla2.setFont(new Font("123", 5, 20));
    
            final   JTextField textField1 = new JTextField(8);
            textField1.setFont(new Font("subject", Font.PLAIN, 20));
            textField1.setLocation(150,50);
            textField1.setSize(250, 50);
    
            JLabel jla3 = new JLabel("    : ");
            jla3.setLocation(50,150);
            jla3.setSize(150, 50);
            jla3.setFont(new Font("123", 5, 20));
    
            final   JTextField textField3 = new JTextField(8);
            textField3.setFont(new Font("content", Font.PLAIN, 20));
            textField3.setLocation(150,150);
            textField3.setSize(250, 50);
    
       final      JTextArea jta = new JTextArea();
            jta.setLocation(150,150);
            jta.setSize(250, 200);
            jta.setFont(new Font("content", Font.PLAIN, 30));
            JButton btn = new JButton("    ");
            btn.setLocation(150,380);
            btn.setSize(100, 50);
            btn.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
    
            try {
            ReceiveEmailManger re = new ReceiveEmailManger();
             String [] mess =  re.ReceiveEmailManger();
                textField1.setText(mess[1]);
                jta.setText(mess[2]);
            }catch (Exception ea){
             ea.printStackTrace();
            }
    
                }
            });
    
            panel.add(jla2);
            panel.add(jla3);
            panel.add(textField1);
    
            panel.add(btn);
            panel.add(jta);
    
            // 4.                        
            jf.setContentPane(panel);
    
            // 5.     ,            ,   jf.setVisible(true)              。
            jf.setVisible(true);
    
     }
    
    
    
        public String[] ReceiveEmailManger() throws Exception {
            //            
            MailSSLSocketFactory sf = new MailSSLSocketFactory();
            sf.setTrustAllHosts(true);
            String pop3Server = "pop.qq.com";
            String protocol = "pop3";
            String username = "    qq  ";
            String password = "    QQ   ";
            Properties prop = new Properties();
            prop.put("mail.store.protocol", protocol);
            prop.put("mail.pop3.host", pop3Server);
            //       ,  ssl     true,    530  
            prop.put("mail.pop3.ssl.enable", "true");
            prop.put("mail.pop3.ssl.socketFactory", sf);
            Session mailSession = Session.getDefaultInstance(prop,null);
            mailSession.setDebug(false);
            String [] mess = new  String[3];
            try {
                Store store = mailSession.getStore(protocol);
                //    
                store.connect(pop3Server,username,password);
                //         ,    pop3               inbox
                Folder folder = store.getFolder("inbox");
                //      
                folder.open(Folder.READ_ONLY);
                //      
                int size = folder.getMessageCount();
                Message message = folder.getMessage(size);
                //          
                String from = message.getFrom()[0].toString();
                //         
                String subject = message.getSubject();
                //         
                String conten = message.getContent().toString();
    
                mess[0]=from;
                mess[1]=subject;
                mess[2]=conten;
                
                folder.close(false);
                store.close();
            }catch(Exception e) {
                e.printStackTrace();
            }
            return mess;
        }
    }
    
    四、コンパウンド
    IDEAプログラミングを使って、pom.xmlファイルの下に依存パッケージを導入します。
    
    <!-- java    jar  -->
    <dependencies>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
        </dependency>
    </dependencies>
    
    ここで、Javaの実戦的なswingベースのQQメール送受信機能についての文章を紹介します。Java swingベースのQQメール送受信機能により、内容を実現します。以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。