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

tdy1234 2011-03-07 02:32:09
我写了一段发送邮件的代码,但是发出来的邮件的标题英文正常显示,中文为乱码,试过网上的一些解决方案,好像都无法解决,请各位大大,来一个详细的指点谢谢,代码如下
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 出来的数据也是正常的
但就是发出来的邮件标题不对,请各位不吝赐教
谢谢
...全文
1583 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cyfmaomao 2011-12-26
  • 打赏
  • 举报
回复
subject = StringUtil.getString(subject, "GB2312");
subject = new String(Base64.encode((subject).getBytes()));
message.setSubject("=?GB2312?B?" + subject + "?=");

中文要转成gb2312编码,从邮件服务器里取出来的正常才是正常
tdy1234 2011-03-07
  • 打赏
  • 举报
回复
没人能指点吗

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧