2014-11-02 144 views
4

我可以成功,你的Java郵件API發送電子郵件,但現在我正試圖發送一個ResultSet的內容填充MySQL格式的表中的邊界等查詢,我可以使用CSS標籤來做到這一點?如果是的話如何?Java郵件格式化使用CSS在電子郵件中發送的表格?

我的代碼如下:

public void getOutstanding() throws MessagingException { 
    try { 
     String outS = "SELECT period_to, type, amt, status FROM tblinstall " 
         + "WHERE status like ?"; 

     PreparedStatement update = toDB.prepareStatement(outS); 

     email = new StringBuilder(); 

     email.append("<html><head><style type='text/css'>table .out {border-width:1px, " 
        + "border-color: black}</style></head>" 
        + "<body>" 
        + "<table class'out'><span style=border-color: black, border-width: 1px>"); 

     update.setString(1, "Outstanding"); 
     ResultSet results = update.executeQuery(); 

     while (results.next()) { 
      System.out.println("in results..."); 
      email.append("<tr>"); 
      email.append("<td>"); 
      long period = results.getLong("period_to"); 
      email.append(DateConvert.fromEpoch(period)); 
      email.append("</td>"); 

      email.append("<td>"); 
      email.append(results.getString("type")); 
      email.append("</td>"); 

      email.append("<td>"); 
      email.append(results.getString("amt")); 
      email.append("</td>"); 

      email.append("<td>"); 
      email.append(results.getString("status")); 
      email.append("</td>"); 

      email.append("<tr>"); 
     } 

     email.append("</table></body></html>"); 
     sm.populateMailMessage(email.toString()); 
     sm.sendMail(); 
    } catch (SQLException sql) { 
     sql.printStackTrace(); 
    }     
} 

我能夠發送電子郵件,但只有純文本,「SM」是的SendMail的情況如下:

public class SendMail { 
    private Properties mailAccessCredentials; 
    private Session mailSession; 
    private MimeMessage mailMessage;   

    public SendMail() throws MessagingException{ 
     populateProperties(); 
    }  

    private void populateProperties() throws AddressException, MessagingException {  
     //Step1  
     System.out.println("\n 1st ===> setup Mail Server Properties.."); 
     mailAccessCredentials = System.getProperties(); 
     mailAccessCredentials.put("mail.smtp.port", "587"); // TLS Port 
     mailAccessCredentials.put("mail.smtp.auth", "true"); // Enable Authentication 
     mailAccessCredentials.put("mail.smtp.starttls.enable", "true"); // Enable StartTLS 
     System.out.println("Mail Server Properties have been setup successfully..");  
    }  

    public void populateMailMessage(String msg) throws MessagingException{    
     //Step2  
     System.out.println("\n\n 2nd ===> get Mail Session.."); 
     mailSession = Session.getDefaultInstance(mailAccessCredentials, null); 
     mailMessage = new MimeMessage(mailSession); 
     mailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress("n****@gmail.com")); 

     mailMessage.setSubject("Report from Database Payments now Due"); 

     mailMessage.setContent(msg, "text/html"); 
     System.out.println("Mail Session has been created successfully.."); 
    } 

    public void sendMail() throws MessagingException{   
     //Step3  
     System.out.println("\n\n 3rd ===> Get Session and Send mail"); 
     Transport transport = mailSession.getTransport("smtp"); 

     // Enter your correct gmail UserID and Password 
     transport.connect("smtp.gmail.com", "[email protected]******", "****"); 
     transport.sendMessage(mailMessage, mailMessage.getAllRecipients()); 
     transport.close(); 
    } 

    public static void main(String[] args) throws MessagingException { 
     SendMail sm = new SendMail(); 
     //sm.populateMailMessage(); 
     sm.sendMail(); 
    } 
} 
+1

你應該使用內聯CSS的,我想實現這個使用此代碼的答覆 – 2014-11-02 23:38:33

+0

感謝: – mg3np1 2014-11-03 10:23:30

+0

email.append(」 <風格類型= '文本/ CSS'>表.OUT {border- width:1px,「 +」border-color:black}「 +」「 +」

「) ; – mg3np1 2014-11-03 10:24:53

回答

5

可以使用inline css風格你的表格。你不能分開使用CSS,因爲大多數電子郵件服務不支持它.. ..更改您的電子郵件字符串構建代碼爲以下代碼。

email.append("<html><body>" 
        + "<table style='border:2px solid black'>"); 

     update.setString(1, "Outstanding"); 
     ResultSet results = update.executeQuery(); 

     while (results.next()) { 
      System.out.println("in results..."); 
      email.append("<tr bgcolor=\"#33CC99\">"); 
      email.append("<td>"); 
      long period = results.getLong("period_to"); 
      email.append(DateConvert.fromEpoch(period)); 
      email.append("</td>"); 

      email.append("<td>"); 
      email.append(results.getString("type")); 
      email.append("</td>"); 

      email.append("<td>"); 
      email.append(results.getString("amt")); 
      email.append("</td>"); 

      email.append("<td>"); 
      email.append(results.getString("status")); 
      email.append("</td>"); 

      email.append("<tr>"); 
     } 

     email.append("</table></body></html>"); 
     sm.populateMailMessage(email.toString()); 
     sm.sendMail(); 
+0

謝謝@fastsnail!我假設我可以使用其他有效的CSS屬性,如填充等? :) – mg3np1 2014-11-03 19:35:56

+0

@ mg3np1我想你可以。但PLZ檢查..u可以發送到電子郵件,雅虎..等並檢查您的CSS屬性是否工作 – 2014-11-04 01:12:57

+0

@ mg3np1,也看看這一個http://templates.mailchimp.com/resources/email-client-css-支持/ – 2014-11-04 01:48:43