2010-10-28 99 views
1
StringWriter sw = new StringWriter(); 
PrintWriter pw = new PrintWriter(sw); 

String rowFormat = "%8s %8s %8s %8s%n"; 
pw.printf(rowFormat, "Col A", "Col B", "Col C", "Col XY"); 
pw.printf(rowFormat, "A", "19", "Car", "55"); 
pw.printf(rowFormat, "X", "21", "Train C", "-4"); 
pw.printf(rowFormat, "B", "-9", "Bike", "0"); 
String message = sw.toString(); 
System.out.println(message); 

上述程序打印下表並且對齊是完美的。相反,印刷string message在自動郵件內容中的HTML格式化

Col A Col B Col C Col XY 
    A  19  Car  55 
    X  21 Train C  -4 
    B  -9  Bike  0 

,我傳遞的字符串,它發送電子郵件與郵件的內容爲string message另一個函數。

mail.setContent(message.toString(),"text/plain"); 

這就是我如何在郵件中設置郵件內容。

但是,表格的對齊方式並不合適,因爲我在打印字符串時收到了對齊方式。必須做些什麼才能使我收到的郵件內容與字符串的打印格式相似。

我可以認識到,將MIME類型設置爲text/html並使用<table>標記形成表格將幫助我實現所需的任務。

請讓我知道,如何以及在哪裏應該插入<table><tr><th>標籤,以便在郵件內容中查找表格格式。

回答

2

就個人而言,我會用velocity這樣的事情,但是,我認爲這是你想要什麼:

String headerFormat = "<tr><th>%8s</th><th>%8s</th><th>%8s</th><th>%8s%n</th></tr>"; 
String rowFormat = "<tr><td>%8s</td><td>%8s</td><td>%8s</td><td>%8s%n</td></tr>"; 

pw.printf(headerFormat, "Col A", "Col B", "Col C", "Col XY"); 
pw.printf(rowFormat, "A", "19", "Car", "55"); 
pw.printf(rowFormat, "X", "21", "Train C", "-4"); 
pw.printf(rowFormat, "B", "-9", "Bike", "0"); 

String message = "<table>" + sw.toString() + "</table>"; 
System.out.println(message); 

你可以在HTML表格here更多信息。

+1

你或許可以擺脫'%8'和'%n'值,而是隻使用'%s' - 但這並不重要,因爲大多數(如果不是全部的話)html呈現器會忽略多餘的空白。 – javamonkey79 2010-10-28 16:56:36

+0

@LGAP:非常歡迎。 – javamonkey79 2010-10-28 18:47:20