JavaMail ライブラリを使用していますが、メールの本文、文章を別の色に変更したいのですが? どうすればいいですか?私のアプリケーションは(Swing/JFrame)にあります
質問する
9918 次
4 に答える
6
電子メールを HTML として送信する例: http://www.tutorialspoint.com/java/java_sending_email.htm
Baadshah が提案しているのは、html タグを使用して Content 文字列内にすべての色の書式設定を追加することです。
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 で色を付けるさまざまな方法を調べることができます。 . これには、FONT を使用する (上記の例のように) 古い方法や、CSS を使用する最新の方法が含まれます。
編集: toHexString は 8 文字の 16 進コード (アルファ + 赤 + 青 + 緑) を返しますが、HTML はアルファなしの RGB のみを必要とします。このリンクのソリューションを使用し、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 = "targetemail@somehost.com";
// Sender's email ID needs to be mentioned
String from = "youremail@somehost.com";
// 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;
}
}
注: 私の環境では、実行構成でこの引数を設定する必要がありました。
-Djava.net.preferIPv4Stack=true
詳細はこちら。
于 2013-04-08T21:36:56.993 に答える
2
そのちょうどcss。
ブラウザJAVA
は、送信している HTML コンテンツを検出しますemail
。
例えば
<div style="font-size:14px">Dear user</div>
于 2013-04-08T15:24:20.497 に答える