当前位置:编程学习 > JAVA >>

MimeMessage关于邮件标题中文显示乱码的问题,在线等

我写了一段发送邮件的代码,但是发出来的邮件的标题英文正常显示,中文为乱码,试过网上的一些解决方案,好像都无法解决,请各位大大,来一个详细的指点谢谢,代码如下
public void sendMail(String subject, String msgText, String from,
String[] attachments, String[] TOAddresses, String[] CCAddresses,
String[] bccAddresses) throws MessagingException {

EmailUtil.RecipientSet recipentSet = EmailUtil.suppressDuplicates(
TOAddresses, CCAddresses);

String[] toAddresses = recipentSet.getToAddresses();
String[] ccAddresses = recipentSet.getCcAddresses();

MimeMessage message = new MimeMessage(mailSession);
try
{
}
catch(Exception ex)
{

}
if (from.trim().length() != 0) {
message.setFrom(new InternetAddress(from));
}

// Statement to set the to address
for (int k = 0; k < toAddresses.length; k++) {

if (toAddresses[k].trim().length() != 0) {
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(toAddresses[k]));
}
}

if (ccAddresses != null) {
for (int kcc = 0; kcc < ccAddresses.length; kcc++) {
if (ccAddresses[kcc].trim().length() != 0) {
message.addRecipient(Message.RecipientType.CC,
new InternetAddress(ccAddresses[kcc]));
}
}
}

if (bccAddresses != null) {
for (int kbcc = 0; kbcc < bccAddresses.length; kbcc++) {
if (bccAddresses[kbcc].trim().length() != 0) {
message.addRecipient(Message.RecipientType.BCC,
new InternetAddress(bccAddresses[kbcc]));
}
}
}

message.setSubject(subject,"gb2312");
System.out.println(message.getSubject());

// Create your new message part
BodyPart messageBodyPart = new MimeBodyPart();

// Set the content of the body part
messageBodyPart.setContent(msgText, Configuration.getMailContentType());

// Create a related multi-part to combine the parts
MimeMultipart multipart = new MimeMultipart("related");

// Add body part to multipart
multipart.addBodyPart(messageBodyPart);

// Create part for the attachments
messageBodyPart = new MimeBodyPart();

// statements to attach files in the mail
if (attachments != null) {
for (int i = 0; i < attachments.length; i++) {
if (attachments[i] != null) {
messageBodyPart.setDataHandler(new DataHandler(
new FileDataSource(attachments[i])));
messageBodyPart.setDisposition("attachment; filename=\""
+ attachments[i] + "\"");
messageBodyPart.setFileName(attachments[i]);
multipart.addBodyPart(messageBodyPart);
}
}
}

// add the Multipart to the message
message.setContent(multipart);
// set the Date: header
message.setSentDate(new Date());
// send the message
Transport.send(message);

}
PS: 从数据库读出的数据log打出是正常的,
message.setSubject(subject,"gb2312");
System.out.println(message.getSubject());
System out 出来的数据也是正常的
但就是发出来的邮件标题不对,请各位不吝赐教
谢谢 --------------------编程问答-------------------- 没人能指点吗 --------------------编程问答-------------------- subject = StringUtil.getString(subject, "GB2312");
subject = new String(Base64.encode((subject).getBytes()));
message.setSubject("=?GB2312?B?" + subject + "?=");

中文要转成gb2312编码,从邮件服务器里取出来的正常才是正常
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,