很遗憾还没有,有人告诉我是编码的问题,
但是不知道怎么解码!你能给一个简单的POP3的程序,
且能正常的接收中文的,让我参考参考!谢谢!
但是不知道怎么解码!你能给一个简单的POP3的程序,
且能正常的接收中文的,让我参考参考!谢谢!
解决方案 »
- 线程问题,紧急求解!!!各位大侠们
- 请教一个java父类和子类关系的问题
- 合并排序问题?
- 想从数据库取出一组字符型数据逐个与另一字符串比较
- 最大的 2进制,8进制,10进制,16进制 是什么
- "#$%alkdsjnixocjvlniaofdlanfasodjnvjkcnxjflaksdjf#$%^&".replaceAll(".{3}(.+).{5}", "$1")
- 请问哪有javadoc下载(除了sun网站)
- Java帮助问题
- 如何判定变量的内容变化?
- how to repaint label components immediately?
- 成功了,但是我却高兴不起来
- 请问dos6.22下支持java吗?
是否是他的问题?
我用下面的C代码可以解码,但是转化成Java代码有问题!
你能帮我转化一下吗?
#include <stdio.h>
void main(int argc, char * argv[])
{
FILE * fp; char ch, ch1, ch2; char hz;
fp = fopen("data.txt", "rt");
for (;;)
{
ch = getc(fp); if (ch == EOF) break;
if (ch == '=')
{
ch1 = getc(fp); if (ch1 == '\n') continue;
ch2 = getc(fp);
if (ch1>=65)
ch1-=55;
else ch1-=48;
if (ch2>=65)
ch2-=55;
else ch2-=48;
hz=(ch1<<4);
hz|=ch2;
putchar(hz);
}
else putchar(ch);
}
fclose(fp);
}
好像对Subject等等都可以,可是内容不行。
初始化结果+OK X1 NT-POP3 Server robber (IMail 6.06 EVAL 20-1)
用户名输入结果 +OK welcome
密码输入结果 +OK maildrop locked and ready
List +OK 1 messages (351 octets)
1 351
.
共有 1 封邮件
这是第 1 封邮件
+OK 351 octets
Date: Tue, 24 Apr 2001 14:09:59 +0800
Message-Id: <200104241409.AA3212642@robber>
Mime-Version: 1.0
Content-Type: text/plain; charsets-ascii
From: "系统管理员 " <root@robber>
Reply-To: <root@robber>
To: <robber@robber>
Subject: 好孩子
X-Mailer: <IMail v6.05 EVAL>
X-UIDL: 4
Status: Udo it
*************************
用户名输入结果 +OK welcome
密码输入结果 +OK maildrop locked and ready
List +OK 2 messages (708 octets)
1 351
2 357
.
共有 2 封邮件
+OK 351 octets
Date: Tue, 24 Apr 2001 14:09:59 +0800
Message-Id: <200104241409.AA3212642@robber>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
From: "系统管理员 " <root@robber>
Reply-To: <root@robber>
To: <robber@robber>
Subject: 好孩子
X-Mailer: <IMail v6.05 EVAL>
X-UIDL: 4
Status: Udo it
这是第 1 封邮件
+OK 351 octets
Date: Tue, 24 Apr 2001 14:09:59 +0800
Message-Id: <200104241409.AA3212642@robber>
Mime-Version: 1.0
Content-Type: text/plain; charsets-ascii
From: "系统管理员 " <root@robber>
Reply-To: <root@robber>
To: <robber@robber>
Subject: 好孩子
X-Mailer: <IMail v6.05 EVAL>
X-UIDL: 4
Status: Udo it
*************************
+OK 351 octets
Date: Tue, 24 Apr 2001 14:09:59 +0800
Message-Id: <200104241409.AA3212642@robber>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
From: "系统管理员 " <root@robber>
Reply-To: <root@robber>
To: <robber@robber>
Subject: 好孩子
X-Mailer: <IMail v6.05 EVAL>
X-UIDL: 4
Status: Udo it+OK 357 octets
Date: Tue, 24 Apr 2001 14:21:06 +0800
Message-Id: <200104241421.AA722710@robber>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
From: "李进 海盗" <robber@robber>
Reply-To: <robber@robber>
To: <robber@robber>
Subject: 坏孩子
X-Mailer: <IMail v6.05 EVAL>
X-UIDL: 5
Status: U好孩子!
这是第 2 封邮件
+OK 351 octets
Date: Tue, 24 Apr 2001 14:09:59 +0800
Message-Id: <200104241409.AA3212642@robber>
Mime-Version: 1.0
Content-Type: text/plain; charsets-ascii
From: "系统管理员 " <root@robber>
Reply-To: <root@robber>
To: <robber@robber>
Subject: 好孩子
X-Mailer: <IMail v6.05 EVAL>
X-UIDL: 4
Status: Udo it+OK 357 octets
Date: Tue, 24 Apr 2001 14:21:06 +0800
Message-Id: <200104241421.AA722710@robber>
Mime-Version: 1.0
Content-Type: text/plain; charsets-ascii
From: "李进 海盗" <robber@robber>
Reply-To: <robber@robber>
To: <robber@robber>
Subject: 坏孩子
X-Mailer: <IMail v6.05 EVAL>
X-UIDL: 5
Status: U好孩子!
*************************
源代码如下!!!
不好意思!这么久才解决!import java.io.*;
import java.net.*;
public class Pop3test
{
public static void main(String[] args)
{
try{
Socket s = new Socket(args[0],110);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
String str;
str = in.readLine();
System.out.println("初始化结果"+str);
out.write("USER robber\n");
out.flush();
str = in.readLine();
System.out.println("用户名输入结果 "+str);
out.write("pass 123456\n");
out.flush();
str = in.readLine();
System.out.println("密码输入结果 "+str);
out.write("list\n");
out.flush();
str = in.readLine();
System.out.println("List "+str);
int i=0;
while((str = in.readLine()) != null)
{
System.out.println(str);
if (!(str.equals(".")))
{
i++;
}
else
break;
}
System.out.println("共有 "+i+" 封邮件");
String result = "";
byte[] b;
byte[] b1;
char bb;
for (int j=1;j<=i;j++)
{
out.write("RETR "+j+"\n");
out.flush();
while (((str = in.readLine()) != null) &&(!(str.equals(".")))){
result += str + "\n";
}
System.out.println(result);
ByteArrayOutputStream brr = new ByteArrayOutputStream();
b = result.getBytes();
for(int k = 0 ; k < b.length; k++){
if( b[k] == '='){
k++;
if(b[k] != '\n') continue;
if(b[k] >= 65)
b[k] -= 55;
else
b[k] -= 48;
if(b[k+1] >= 65)
b[k+1] -= 55;
else
b[k+1] -= 48;
//bb = b[k];
//bb = bb << 4;
//bb = (char)(b[k] << 4);
//bb |= b[k+1];
k++;
brr.write(b[k+1]);
brr.write(b[k]);
brr.flush();
}
else
{brr.write(b[k]);}
}
System.out.println("这是第 "+j+" 封邮件");
System.out.println(brr.toString());
System.out.println("*************************");
}
s.close();
}catch(Exception e)
{e.printStackTrace();}
}
}
谢谢你的热心帮助,但是还是不行,可能是你在测试的时候发的邮件使用Imai客户端发的,
如果你用Foxmail3.1发封邮件再收的话,则显示的是一些数字。因为Imail发送邮件时没有对
邮件体进行编码,而Foxmail则对其采用了”quoted-printable“格式的编码,上面你的程序
对其进行了解码,但是没有成功。上面那段C程序完全可以对“quoted-printable”进行解码,
我测试过,但是你的解码程序输出的是一些字母和数字,如下:
这是第 1 封邮件
+OK 682 octets
Received: from xieli [128.8.1.2] by wxyxl.com
(SMTPD32-4.06) id A8482E0428; Mon, 23 Apr 2001 20:51:36 PDT
Date: Mon, 23 Apr 2001 20:51:36 +0800
From: ISO-8859-1?Q?D5FE25?<[email protected]>
To: ISO-8859-1?Q?0B06?<[email protected]>
Subject:
X-mailer: FoxMail 3.1 [cn]
Mime-Version: 1.0
Content-Type: text/plain; charsetGB2312"
Content-Transfer-Encoding: quoted-printable
X-UIDL: 987714531
Status: U0B063C4AA331 Hello!0B0631 62
0131 D5FE25
[email protected]
可以给分了,所以拖的这么迟!希望以后能多多指教!