Java 如何将表或视图作为嵌入式HTML发送<;表>;在电子邮件中
我尝试通过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.
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);
}