2017-03-13 6 views
0

でOutlook上でHTML形式の電子メールでCSSを送信しようとすると、私は、文字列を構築し、パラメータ私のメールメソッドとしてそれを渡すことで、HTML形式の電子メールを送信しようとしている:JavaMailの

// Build string to send as email message 
     StringBuilder buf = new StringBuilder(); 
     buf.append("<html>" + 
       "<body>" + 
       "<table>" + 
       "<tr style=\"background-color: #8C0000; color: #fff; font-family: Arial; font-size: 14px; font-weight: bold;\">" + 
       "<th style=\"padding: 10px;\">Assigned Group</th>" + 
       "<th style=\"padding: 10px;\">Incident Type</th>" + 
       "<th style=\"padding: 10px;\">Status</th>" + 
       "<th style=\"padding: 10px;\">Assignee</th>" + 
       "<th style=\"padding: 10px;\">Incident Number</th>" + 
       "<th style=\"padding: 10px;\">Priority</th>" + 
       "<th style=\"padding: 10px;\">Summary</th>" + 
       "</tr>"); 
     for (int i = 0; i < incidentNumberList.size(); i++) { 
      buf.append("<tr style=\"font-family: Arial; font-size: 12px;\"><td style=\"padding: 10px;\">") 
        .append(assignedGroup) 
        .append("</td><td style=\"padding: 10px;\">") 
        .append(incidentTypeList.get(i)) 
        .append("</td><td style=\"padding: 10px;\">") 
        .append(statusList.get(i)) 
        .append("</td><td style=\"padding: 10px;\">") 
        .append(assigneeNameList.get(i)) 
        .append("</td><td style=\"padding: 10px;\">") 
        .append(incidentNumberList.get(i)) 
        .append("</td><td style=\"padding: 10px;\">") 
        .append(priorityList.get(i)) 
        .append("</td><td style=\"padding: 10px;\">") 
        .append(summaryList.get(i)) 
        .append("</td></tr>"); 
     } 
     buf.append("</table>" + 
       "</body>" + 
       "</html>"); 
     String emailMessage = buf.toString(); 

     // Send an email to the manager of the Assigned Group 
     sendManagerEmail(emailMessage); 

メール方法:

private static void sendManagerEmail(String emailMessage) { 
     final String username = "user"; 
     final String password = "pass123"; 

     Properties props = new Properties(); 
     props.put("mail.smtp.auth", "true"); 
     if (ENCRYPT) { 
      props.put("mail.smtp.starttls.enable", "true"); 
     } else { 
      props.put("mail.smtp.starttls.enable", "false"); 
     } 
     props.put("mail.smtp.ssl.trust", "internetsmtp.example.com"); 
     props.put("mail.smtp.host", "internetsmtp.example.com"); 
     props.put("mail.smtp.port", "25"); 
     // SSL 
     props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 

     Session session = Session.getInstance(props, 
       new javax.mail.Authenticator() { 
        protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication(username, password); 
        } 
       }); 

     try { 
      Message message = new MimeMessage(session); 
      message.setFrom(new InternetAddress("[email protected]")); 
      message.setRecipients(Message.RecipientType.TO, 
        InternetAddress.parse("[email protected]")); 
      message.setSubject("Tickets — Attention Needed"); 
      message.setContent(emailMessage 
        , "text/html; charset=utf-8"); 

      Transport.send(message); 

     } catch (MessagingException e) { 
      throw new RuntimeException(e); 
     } 
    } 

ここで重要な行はmessage.setContent(emailMessage , "text/html; charset=utf-8");です。このメソッドに送信したHTMLコードの文字列は、メッセージコンテンツの本文から構成されています。

電子メールはテーブルでフォーマットされていますが、CSSではフォーマットされていないため、かなり醜いものになります。 CSSを表示するためにここでできることはありますか?私はhtmlタグに直接スタイルを構築すれば十分だろうと思っていました。

+0

メールのHTMLを投稿できますか? –

+0

メールのHTMLは上に表示されています。それは文字列として構築され、メールメソッドに渡されます。 @AdrienQUINT – santafebound

+0

しかし、最終的なレンダリング(電子メール)はどのように見たいですか? –

答えて

0

上記のコードは正しいですが、TLS(http://blog.redturtle.it/2011/10/28/using-javamail-with-tls)で電子メールを暗号化して、迷惑メールにならないようにしてください。通常、迷惑メールはHTMLをレンダリングしません。 TLSの設定に問題がある場合は、メールを迷惑メールから受信トレイに移動して、表示されたHTMLを表示してデバッグしてください。