0

私のJavaプログラムでは、特定の電子メールを送信または表示するなどのボタンを含むHTMLファイルを出力する必要があり、これはこのJavaプログラムに保存されます(サーバー上で実行されます)。この HTML ファイルをリンクして、ボタンがクリックされたときに実際に Java プログラムのメソッド (send email メソッドなど) を呼び出し、メールを保存するリストなどのいくつかのフィールドに影響を与えるにはどうすればよいですか? これを行う方法がない場合、どうすればやりたいことを達成できますか? ありがとうございました。

これは GUI 用のコードですが、GUI は必要ありません。これらすべてのコードを出力 HTML ファイルに変換したいと考えています。基本的に、これらのコードの代わりに、この GUI とまったく同じことを行う HTML ファイルを出力する必要があります。Web ページを出力する必要があるのは、プログラムをサーバー上で起動するときに、GUI がそれほど便利ではないためです。プログラムは常に実行されていると思います。主に、このルーチンを 1 日に 1 回実行する timeTask があります。

public void createEmailPanel(String name, final Email email) {
    final JPanel emailPanel = new JPanel();
    emailPanel.setLayout(null);
    emailPanel.setSize(900, 50);
    panel.add(emailPanel);

    String emails = "";
    for(String a : email.getList()) {
        emails = emails + a + " ";
    }

    JLabel labelName = new JLabel(emails);
    labelName.setLocation(0, 0);
    labelName.setSize(700, 30);
    emailPanel.add(labelName);

    JButton display = new JButton("Display Email");
    display.setLocation(0, 50);
    display.setSize(200, 30);
    display.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            JEditorPane HtmlPane= new JEditorPane();
            boolean fail = false;
            try {
                File temp = File.createTempFile("temp", ".html");
                BufferedWriter out = new BufferedWriter(new FileWriter(temp));
                out.write(email.getBody());
                out.close();

                HtmlPane.setContentType("text/html");
                HtmlPane.setEditable(false);
                try {
                    HtmlPane.setPage(temp.toURI().toURL());
                } catch (MalformedURLException a) {
                    fail = true;
                    JPanel p = new JPanel();
                    p.setSize(500, 200);
                    p.setLayout(null);

                    JLabel labelName = new JLabel("Error displaying emails");
                    labelName.setLocation(0, 0);
                    labelName.setSize(700, 30);
                    p.add(labelName);

                    JFrame f = new JFrame();
                    f.setSize(500, 200);
                    f.add(p);
                    f.setVisible(true);
                }
                JScrollPane jsp=new JScrollPane(HtmlPane);
                JFrame f = new JFrame();
                f.setSize(800, 500);
                f.add(jsp);
                f.setVisible(true);
                temp.delete();
            } catch (IOException e1) {
                if(fail) {
                    JPanel p = new JPanel();
                    p.setSize(500, 200);
                    p.setLayout(null);

                    JLabel labelName = new JLabel("Error displaying emails");
                    labelName.setLocation(0, 0);
                    labelName.setSize(700, 30);
                    p.add(labelName);

                    JFrame f = new JFrame();
                    f.setSize(500, 200);
                    f.add(p);
                    f.setVisible(true);
                }
            }

        }
    });
    emailPanel.add(display);


    JButton sendRecipient = new JButton("Send Email to Recipients");
    sendRecipient.setLocation(440, 50);
    sendRecipient.setSize(200, 30);
    sendRecipient.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e) {
            email.sendEmailToRecipients();
            queue.remove(email);
            panel.remove(emailPanel);
            JPanel pane = new JPanel();
            pane.setSize(900, 50);
            panel.add(pane);
            JLabel labe = new JLabel("Email sent to recipients.");
            labe.setSize(900, 50);
            labe.setHorizontalAlignment(0);
            pane.add(labe);
            frame.validate();
            frame.repaint();
        }
    });
    emailPanel.add(sendRecipient);

email は、JavaMail を使用する sendEmailRecipient メソッドを持つ Email オブジェクトです。また、メールの本文も HTML ですが、ここでは関係ないかもしれません。

4

0 に答える 0