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 开发