2013-04-08 4 views

ответ

3

Пример отправки электронной почты в формате HTML: http://www.tutorialspoint.com/java/java_sending_email.htm

Что Baadshah предлагает, добавляет все ваши цвета форматирования внутри содержимого строки, используя HTML-теги.

 message.setContent("<h1>This is actual message</h1>", 
         "text/html"); 

Вы можете программно построить строку, содержащую сообщение тела.

String line1 = "This is the first line in the body. We want it to be blue." 

addColor(line1, Color.BLUE); 

Затем создайте метод для обработки Расцветки HTML:

public static String addColor(String msg, Color color) { 
    String hexColor = String.format("#%06X", (0xFFFFFF & color.getRGB())); 
    String colorMsg = "<FONT COLOR=\"#" + hexColor + "\">" + msg + "</FONT>"; 
    return colorMsg; 
} 

Вы можете исследовать различные способы раскрашивания в HTML здесь: http://www.htmlgoodies.com/tutorials/colors/article.php/3479011/How-To-Change-Text-Color-Using-HTML-and-CSS.htm. Это включает в себя старые способы сделать это, например, используя FONT (как мой пример выше) или современные способы сделать это с помощью CSS.

Редактировать: ToHexString возвращает шестнадцатеричный код из 8 символов (альфа + красный + синий + зеленый), а HTML только хочет RGB без альфы. Я использовал решение от this link, и настроить SSCCE:

import java.awt.Color; 
import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.*; 

public class EmailTestHTML 
{ 
public static void main(String [] args) 
{ 

    // Recipient's email ID needs to be mentioned. 
    String to = "[email protected]"; 

    // Sender's email ID needs to be mentioned 
    String from = "[email protected]"; 

    // Assuming you are sending email from localhost 
    String host = "putYourSMTPHostHere"; 

    // Get system properties 
    Properties properties = System.getProperties(); 

    // Setup mail server 
    properties.setProperty("mail.smtp.host", host); 

    // Get the default Session object. 
    Session session = Session.getDefaultInstance(properties); 

    // String with body Text 
    String bodyText = addColor("This line is red.", Color.RED); 
    bodyText += "<br>" + addColor("This line is blue.", Color.BLUE); 
    bodyText += "<br>" + addColor("This line is black.", Color.BLACK); 

    System.out.println(bodyText); 

    try{ 
     // Create a default MimeMessage object. 
     MimeMessage message = new MimeMessage(session); 

     // Set From: header field of the header. 
     message.setFrom(new InternetAddress(from)); 

     // Set To: header field of the header. 
     message.addRecipient(Message.RecipientType.TO, 
           new InternetAddress(to)); 

     // Set Subject: header field 
     message.setSubject("This is the Subject Line!"); 

     // Send the actual HTML message, as big as you like 
     message.setContent(bodyText, 
         "text/html"); 

     // Send message 
     Transport.send(message); 
     System.out.println("Sent message successfully...."); 
    }catch (MessagingException mex) { 
     mex.printStackTrace(); 
    } 
} 

public static String addColor(String msg, Color color) { 
    String hexColor = String.format("#%06X", (0xFFFFFF & color.getRGB())); 
    String colorMsg = "<FONT COLOR=\"#" + hexColor + "\">" + msg + "</FONT>"; 
    return colorMsg; 
} 
} 

Примечание: В моей среде я должен был установить этот аргумент в конфигурации Run:

-Djava.net.preferIPv4Stack = истинный

Подробнее об этом here.

+0

Integer.ToHexString (цвет) показывает ошибку и «colorMsg» вместо форматирования colorMsg, общее предложение печатается в письме « vijay

+0

Извините. Вы хотите Integer.ToHexString (Color.getRGB()) – Damienknight

2

Его просто css.

Ничего общего с JAVA. Браузер определяет ваш HTML-контент, который вы отправляете в email.

Например

<div style="font-size:14px">Dear user</div> 
+0

могли бы вы объяснить, потому что я понятия не имею, о CSS и HTML, Спасибо. – vijay

+0

http://www.codecademy.com/ru/tracks/web – Damienknight

1

Вы должны отправить почту в формате HTML, чтобы иметь возможность изменить цвет текста.

См. JavaMail FAQ.

0

Для меня это работало безупречно, стоит выстрел:

String htmlText2 = "<font color=red>Jon Targaryen</font>\n"; 

или если вы хотите использовать шестнадцатеричный цвет:

String htmlText2 = "<font color=#93cff2>Jon Targaryen</font>\n"; 

Вы можете добавить дополнительные атрибуты, такие как заголовки или Жирный:

String htmlText2 = "<H1><font color=red>Jon Targaryen</font></H1>\n"; 

String htmlText2 = "<b><H1><font color=red>Jon Targaryen</font></H1></b>\n"; 
Смежные вопросы