Java 如何将表或视图作为嵌入式HTML发送<;表>;在电子邮件中

Java 如何将表或视图作为嵌入式HTML发送<;表>;在电子邮件中,java,smtp,jakarta-mail,html-email,Java,Smtp,Jakarta Mail,Html Email,我尝试通过java代码发送html表 public static void main(String args[]){ try{ Properties props = new Properties(); props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.host", "smtp.gmail.

我尝试通过java代码发送html表

    public static void main(String args[]){
            try{
            Properties props = new Properties();
            props.setProperty("mail.transport.protocol", "smtp");
            props.setProperty("mail.host", "smtp.gmail.com");

            Session mailSession = Session.getDefaultInstance(props, null);
            mailSession.setDebug(true);
            Transport transport = mailSession.getTransport();

            MimeMessage message = new MimeMessage(mailSession);
            message.setSubject("HTML  mail with images");
            message.setFrom(new InternetAddress("abc@gmail.com"));
            message.addRecipient(Message.RecipientType.TO,
                 new InternetAddress("abc@gmail.com"));

            String html = "<html><head><title>" +
            message.getSubject() +
            "</title></head><body><h1>" +
            message.getSubject() +
            "</h1><p>This is a test of sending an HTML e-mail" +
            " through Java.</p>";

// HTMLDataSource is an inner class
            message.setDataHandler(new DataHandler(new HTMLDataSource(html)));

            transport.connect();
            transport.sendMessage(message,
                message.getRecipients(Message.RecipientType.TO));
            transport.close();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            }
        static class HTMLDataSource implements DataSource {
            private String html;

            public HTMLDataSource(String htmlString) {
                html = htmlString;
            }

            // Return html string in an InputStream.
            // A new stream must be returned each time.
            public InputStream getInputStream() throws IOException {
                if (html == null) throw new IOException("Null HTML");
                return new ByteArrayInputStream(html.getBytes());
            }

            public OutputStream getOutputStream() throws IOException {
                throw new IOException("This DataHandler cannot write HTML");
            }

            public String getContentType() {
                return "text/html";
            }

            public String getName() {
                return "JAF text/html dataSource to send e-mail only";
            }
        }
    }

我想在邮件正文中嵌入sql表,该表将根据情况而动态变化。请指导我如何继续。

不清楚您所处的位置-根据数据创建html表,创建包含html表数据的字符串,或使用JavaMail发送该字符串。对于后者,您的代码是不必要的复杂。您可以去掉HtmldataSource,只需使用message.setText(html,“utf-8”,“html”)

List objList = new ArrayList();
    try
    {
        conn=dao.DBConnection();

        sql1.append(" select MENU_ID, MENU_CODE, MENU_NAME, DESCRIPTON, ACTION_URL, CATEGORY, SORT_ORDER from m_menus order by MENU_ID ");


        iPreparedStatement1=conn.prepareStatement(sql1.toString());
        iResultSet1=iPreparedStatement1.executeQuery();

        while(iResultSet1.next())
        {
            afUserAdminMenuMaster objafuseradminmenumaster = new afUserAdminMenuMaster();
            Integer i=0;

            objafuseradminmenumaster.setMenuId(iResultSet1.getString(++i));
            objafuseradminmenumaster.setMenuCode(iResultSet1.getString(++i));
            objafuseradminmenumaster.setMenuName(iResultSet1.getString(++i));
            objafuseradminmenumaster.setMenuDesc(iResultSet1.getString(++i));
            objafuseradminmenumaster.setAction_URL(iResultSet1.getString(++i));
            objafuseradminmenumaster.setCategory(iResultSet1.getString(++i));
            objafuseradminmenumaster.setSortOrder(iResultSet1.getString(++i));


            objList.add(objafuseradminmenumaster);
        }