作者graceliu (累)
看板java
标题[问题] javamail已设big5但还是乱码,solaris系统
时间Fri Feb 14 10:48:14 2014
程式内容是为了读档案,然後依档案内容发送给不同寄件者与mail内容
程式内容如下,有人可以帮忙解答吗??谢谢了
String fromLang = "BIG5";
String strSubject;
//读入档案
String inFile = "sendcontent.txt";
try{
File readfile = new File(inFile);
if (readfile.exists())
{
System.setProperty( "mail.mime.charset", "big5" );
// Create a default MimeMessage object.
MimeMessage message = new MimeMessage(session);
BufferedReader input = new BufferedReader(new FileReader(readfile));
String strContent;
// Create the message part
BodyPart messageBodyPart = new MimeBodyPart();
// Create a multipar message
Multipart multipart = new MimeMultipart();
while ((strContent = input.readLine()) != null)
{
while (!strContent.equals("END") && strContent != null)
{
String[] strArry = strContent.split(":");
//收件者
if (strArry[0].equals("TO"))
{
// Set To: header field of the header.
to = strArry[1];
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
}
//主旨、寄件者
else if (strArry[0].equals("SUBJECT"))
{
// Set From: header field of the header.
InternetAddress from = new InternetAddress(fromAdd, fromName, fromLang);
message.setFrom(from);
// Set Subject: header field
message.setSubject(strArry[1], "big5");
//message.setSubject(MimeUtility.encodeText(strArry[1], "big5", "B"));
//message.setHeader("Subject", MimeUtility.encodeText(strArry[1], "big5",
"B"));
//message.setSubject(MimeUtility.encodeText(message.getSubject(), "big5",
"B"));
System.out.println(strArry[1]);
}
//本文内容
else if (strArry[0].equals("TEXT"))
{
messageBodyPart = new MimeBodyPart();
//* Send the actual HTML message, as big as you like(HTML)
StringBuffer mailText = new StringBuffer("");
mailText.append(strArry[1]);
messageBodyPart.setContent(mailText.toString(), "text/html;charset=BIG5");
multipart.addBodyPart(messageBodyPart);
}
//附件
else if (strArry[0].equals("ATTFILE"))
{
messageBodyPart = new MimeBodyPart();
String filename = strArry[1];
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(MimeUtility.encodeText(filename,"BIG5","B"));
multipart.addBodyPart(messageBodyPart);
}
strContent = input.readLine();
}
message.setContent(multipart);
// Send message
Transport.send(message);
message = new MimeMessage(session);
multipart = new MimeMultipart();
}
System.out.println("END结束");
}
}catch (MessagingException mex) {
mex.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.80.39.159
1F:→ Lordaeron:你file 上来就编码不对了吧, 读档可以设定编码的. 02/14 11:16
2F:推 PsMonkey:推楼上,另外这种问题最好补 client 环境 & 设定 02/14 11:46
3F:→ swpoker:这种大概是开发都在windows环境~然後一上线就有问题 02/14 15:50
4F:→ Lordaeron:unix上JAVAAP读档的预设编码=locale的设定. 02/15 01:01
5F:→ graceliu:s大请问一上线就有问题是可能什麽样的问题啊? 02/15 12:21
6F:→ graceliu:L大,在solaris上语系设为BIG5即解决了,谢谢!! 02/15 12:23
7F:→ Lordaeron:基本上,并不建议动locale,即跑该JAVA AP的ENV的LOCALE 02/16 08:38