亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 11063 | 回復(fù): 18
打印 上一主題 下一主題

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2005-06-01 10:51 |只看該作者 |倒序?yàn)g覽
如題,想用net::pop3模塊寫一個(gè)郵件客戶端,在取得郵箱中的郵件時(shí),用Mail::Header解析頭,輸出郵件主題、發(fā)件人時(shí),有的顯示正常,有的卻是亂碼,請(qǐng)指教!
代碼如下: my $msg     = $pop->;get($msgnum);
         my $parsehead  = Mail::Header->;new($msg);
         chomp (my $subject= $parsehead->;get('Subject'));
         chomp (my $from   = $parsehead->;get('From') );
         chomp (my $date   = $parsehead->;get('Date') );
         my $len = $pop->;list($msgnum) ;
是看的《perl網(wǎng)絡(luò)編程》的第8章,
顯示出的主題有一個(gè)是:
=?gb2312?B?s8/R+8T6ss68086iyO0gTVNETiBXZWJj?= =?gb2312?B?YXN0cyDW0M7EzfjC57njsqU21MIxyNW/zrPM?=

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2005-06-01 15:57 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?

關(guān)注,我也沒辦法解決!
我也在搞一個(gè)web mail的東西給公司自己用,但是,解碼搞不好

求職 : 網(wǎng)絡(luò)信息安全
論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2005-06-01 22:11 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?

呵呵,好像我這樣做并無問題。

  1. sub subject_a{
  2.         my @ten=split("\t",$array[9]);
  3.         my $subject_a=$ten[0];
  4.         my $c10=substr($subject_a,0,1) eq '#'?0:1;
  5.         if($c10){
  6.                 print "您選擇了“郵件主題精確匹配”,正在進(jìn)行過濾.";
  7.                 print LOG "您選擇了“郵件主題精確匹配”,正在進(jìn)行過濾.";
  8.                 if(-z $subject_a){
  9.                         print "文件$subject_a為空,跳過此參數(shù)\n";
  10.                         print LOG "文件$subject_a為空,跳過此參數(shù)\n";
  11.                        
  12.                 }
  13.                 else{
  14.                         foreach my $ag (@delete){
  15.                                 my $header=$pop->;top($ag);
  16.                                 my $parsedhead=$parser->;parse_data($header);
  17.                                 $parsedhead->;head->;decode;
  18.                                 chomp(my $subject=$parsedhead->;head->;get('Subject'));
  19.                                 unless(open(SUBJECT_A,$subject_a)){
  20.                                         print "無法打開$subject_a,程序被中斷。\n";
  21.                                         print LOG "無法打開$subject_a,程序被中斷。\n";
  22.                                         close LOG;
  23.                                         $pop->;quit;
  24.                                         $parsedhead->;purge;
  25.                                         exit;
  26.                                 }
  27.                                 while(<SUBJECT_A>;){
  28.                                         chomp;
  29.                                         print ".";
  30.                                         print LOG ".";
  31.                                         if($subject eq $_){
  32.                                                 push(@del,$ag);
  33.                                                 last;
  34.                                         }
  35.                                 }
  36.                                 close SUBJECT_A;
  37.                                 $parsedhead->;purge;
  38.                         }
  39.                         foreach my $this (@delete){
  40.                                 map{$this=~s/$_//;} @del;
  41.                         }
  42.                         foreach my $that (@delete){
  43.                                 if($that){
  44.                                         push(@vov,$that);
  45.                                 }
  46.                         }
  47.                         @delete=@vov;
  48.                         @vov=();
  49.                         @del=();
  50.                         print ".完成。\n";
  51.                         print LOG ".完成。\n";
  52.                 }
  53.         }
  54.         else{
  55.                 print "您未選擇“郵件主題精確匹配”,跳過此參數(shù)。\n";
  56.                 print LOG "您未選擇“郵件主題精確匹配”,跳過此參數(shù)。\n";
  57.         }
  58. }

復(fù)制代碼

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2005-06-02 09:25 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?

自己再琢磨琢磨。
y6cmE,你從pop3服務(wù)器取郵件時(shí)的代碼能貼出來看看嗎?

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2005-06-02 15:23 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?

需要解碼

求職 : 網(wǎng)絡(luò)信息安全
論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2005-06-02 19:20 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?


  1. #!e:/perl/bin/perl.exe -w
  2. use strict;
  3. ###        0.0.8.2                2003.6.8      by y6cmE
  4. use Net::POP3;
  5. use MIME::Parser;
  6. use Term::ReadKey;
  7. ######################################################################################
  8. local $|=1;
  9. my $host;
  10. my $user;
  11. my @array;
  12. my @delete;
  13. my @del;
  14. my @vov;
  15. my $pop;
  16. my $messages;
  17. my $parser;
  18. my $localtime=localtime;
  19. unless(open(LOG,">;log.txt")){
  20.         print "無法寫日志文件log.txt!程序中斷。\n";
  21.         exit;
  22. }
  23. print "$localtime\n";
  24. print LOG "$localtime\n";
  25. if($#ARGV == 1){
  26.         $host=shift;
  27.         $user=shift;
  28.         &
  29. }
  30. elsif(-e "getopt.ini"){
  31.         unless(open(GETOPT,"getopt.ini")){
  32.                 print "無法打開getopt.ini讀取服務(wù)器與用戶名,程序中斷。\n";
  33.                 print LOG "無法打開getopt.ini讀取服務(wù)器與用戶名,程序中斷。\n";
  34.                 close LOG;
  35.                 exit;
  36.         }
  37.         my @get=<GETOPT>;;
  38.         close GETOPT;
  39.         my $gtt=join("",@get);
  40.         my @opt=split("\n",$gtt);
  41.         $host=$opt[0];
  42.         $user=$opt[1];
  43.         &
  44. }
  45. else{
  46.         print "您的使用方法錯(cuò)誤,請(qǐng)先閱讀“readme”。^_^\n";
  47.         print LOG "您的使用方法錯(cuò)誤,請(qǐng)先閱讀“readme”。^_^\n";
  48.         close LOG;
  49. }
  50. ######################################################################################
  51. sub hack{
  52.         unless(open(CONFIG,"config.ini")){
  53.                 print "無法打開config.ini,程序中斷。\n";
  54.                 print LOG "無法打開config.ini,程序中斷。\n";
  55.                 close LOG;
  56.                 exit;
  57.         }
  58.         my $foo;
  59.         while(<CONFIG>;){
  60.                 $foo.=$_;
  61.         }
  62.         close CONFIG;
  63.         @array=split("\n",$foo);
  64.         my @one=split("\t",$array[0]);
  65.         my $port=$one[0];
  66.         my @two=split("\t",$array[1]);
  67.         my $timeout=$two[0];
  68.         unless($pop=Net::POP3->;new($host,Port=>;$port,Timeout=>;$timeout)){
  69.                 print "無法連接$host或連接時(shí)間超過$timeout秒,請(qǐng)檢查是否已上網(wǎng)、服務(wù)器地址是否正確。\n";
  70.                 print LOG "無法連接$host或連接時(shí)間超過$timeout秒,請(qǐng)檢查是否已上網(wǎng)、服務(wù)器地址是否正確。\n";
  71.                 close LOG;
  72.                 exit;
  73.         }
  74.         print "請(qǐng)輸入您的密碼(不回顯):";
  75.         ReadMode("noecho");
  76.         chomp(my $pass=<STDIN>;);
  77.         ReadMode(0);
  78.         unless($messages=$pop->;login($user,$pass)){
  79.                 print "\n無法登錄$host的$user,請(qǐng)檢查用戶名與密碼是否正確。\n";
  80.                 print LOG "\n無法登錄$host的$user,請(qǐng)檢查用戶名與密碼是否正確。\n";
  81.                 close LOG;
  82.                 exit;
  83.         }
  84.         print "\n登錄到$host的$user\n";
  85.         print LOG "登錄到$host的$user\n";
  86.         my @three=split("\t",$array[2]);
  87.         my $offhand=$three[0];
  88.         $parser=new MIME::Parser;
  89.         unless(-d $offhand){
  90.                 unless(mkdir($offhand,0777)){
  91.                         print "無法創(chuàng)建目錄$offhand,程序中斷。\n";
  92.                         print LOG "無法創(chuàng)建目錄$offhand,程序中斷。\n";
  93.                         close LOG;
  94.                         $pop->;quit;
  95.                         exit;
  96.                 }
  97.         }
  98.         unless($parser->;output_dir("$offhand")){
  99.                 print "打不開目錄$offhand,程序中斷。\n";
  100.                 print LOG "打不開目錄$offhand,程序中斷。\n";
  101.                 close LOG;
  102.                 $pop->;quit;
  103.                 exit;
  104.         }
  105.         $parser->;output_prefix("pgg");
  106.         if($messages eq "0E0"){
  107.                 print "您的郵箱沒有郵件,程序結(jié)束,謝謝使用!\n";
  108.                 print LOG "您的郵箱沒有郵件,程序結(jié)束,謝謝使用!\n";
  109.                 close LOG;
  110.                 $pop->;quit;
  111.                 exit;
  112.         }
  113.         else{
  114.                 print "您的郵箱共有$messages封信件。\n";
  115.                 print LOG "您的郵箱共有$messages封信件。\n";
  116.                 my $last=$pop->;last;
  117.                 $last+=1;
  118.                 $messages+=0;
  119.                 foreach my $msgnum ($last..$messages){
  120.                         push(@delete,$msgnum);
  121.                 }
  122.                 &
  123.                 &
  124.                 &
  125.                 &from_m;
  126.                 &from_a;
  127.                 &subject_m;
  128.                 &subject_a;
  129.                 &filename_m;
  130.                 &body_a;
  131.                 &body_m;
  132.                 &
  133. ......
復(fù)制代碼

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2005-06-06 11:28 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?

謝謝y6cmE,
前面都類似,就是在解析郵件時(shí),你用MIME:arser模塊解析,解析出來的主題等都顯示正常嗎?
看起來用MIME:arser還挺麻煩的

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2005-06-06 18:30 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?

《perl網(wǎng)絡(luò)編程》中的一段代碼,
#!c:\perl\bin\perl

use strict;
use Net:OP3;
use MIME::Entity;
use MIME:arser;

my $file = 'D:\example\11.txt';
open F,$file or die "can't open $file!\n";   
   
my $pop = Net:OP3->;new($host) or die "Can't connect to $host!\n";
my $message = $pop->;login($user=>;$passwd) or die "Can't log in:",$pop->;message,"\n";
my $last = $pop->;last;
$message +=0;
print "inbox has $message message(",$message-$last,"new)\n";

my $parser =new MIME:arser;
$parser->;output_dir("d:\\mail";

my $entity = $parser->;parse(\*F);

print "From        = ",$entity->;head->;get('From'),"\n";
print "Subject     = ",$entity->;head->;get('Subject'),"\n";
print "MIME type   = ",$entity->;mime_type,"\n";
print "arts       = ",scalar $entity->;parts,"\n";

for my $part ($entity->;parts) {
        print "\t",$part->;mime_type,"\t",$part->;bodyhandle->;path,"\n";
}

$entity->;purge;

想試試用MIME:arser對(duì)mail頭進(jìn)行解析是怎樣,但是解析出來的除了MIME type都是空,這是為什么?
執(zhí)行一次,在d:\\mail下會(huì)有一個(gè)空的文本文件,是不是因?yàn)閙y $file = 'D:\example\11.txt'中的11.txt的問題?書上說應(yīng)該是一個(gè)包含MIME編碼的消息。但是我不知道這個(gè)文件應(yīng)該是怎樣的。
請(qǐng)教大家!

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2005-06-07 09:09 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?

再關(guān)注MIME:arser,不知它的解碼效果,針對(duì)于不同的編碼方式,如GBK,UTF-8,等,還有用outlook發(fā)送word文件的特殊編碼方式,解碼效果如何?
這些問題,搞得我頭疼!

論壇徽章:
0
10 [報(bào)告]
發(fā)表于 2005-06-11 21:49 |只看該作者

用net::pop3寫郵件客戶端,取得的郵件主題等顯示亂碼?

使用MIME::Head的decode方法可以解碼。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP