[Perl] POP3


  メール受信テスト




  

#!/usr/local/bin/perl

# **********************************************************
# メール受信テストサンプル
#
# 実行時、HTML 上で <> で挟まれたメールアドレス等は
# 表示されないのでソースを確認する必要があります
# **********************************************************

print "Content-Type: text/html; Charset=Shift_JIS\n";
print "\n";

$server_name = "ドメイン";
$user_name = "ユーザ.ドメイン";
$user_pass = "パスワード";

# メールを受信します
use Net::POP3;
# メールデータを解析します
use MIME::Parser;
# メールヘッダのデコードをします(日本語が混じっている情報)
# decode_mimewords のみをインポート
# 他に encode_mimeword がある
# 全てインポートは use MIME::Words qw(:all);
use MIME::Words qw(decode_mimewords);
# メールデータの JIS を SHIFT_JIS に変換します
use Jcode;

# 接続
$objPop3 = eval{ Net::POP3->new($server_name) or die "ERR"; };
if ( !$objPop3 ) {
	if (substr($@,0,3) eq 'ERR') {
		print "接続できませんでした";
	}
	else {
		print $@;
	}
	exit();
}
#$objPop3 = Net::POP3->new($server_name) or die "ERR";

# メールデータ解析用オブジェクト作成
$objParse = new MIME::Parser;
# 既存のデイレクトリにデータを出力します
# ここで、pop3 はディレクトリ名
# 省略するとカレントディレクトリ
#$objParse->output_dir('pop3');
# メモリ上で行ないます
$objParse->output_to_core(1);

# ログイン
# $nMessage にはメッセージ数が返ります
$nMessage = $objPop3->login($user_name,$user_pass);

print "メッセージ数は $nMessage 件です<br>\n";

#ハッシュの参照が戻されます
$msgid = $objPop3->list();

# % を付けてハッシュとして操作
# メッセッージ番号逆順ソート用コンバート
foreach $key ( keys %$msgid ) {
	$sortdata{sprintf("%03d", 1000 - $key)} = $$msgid{$key};
}

# 新着順
foreach $key ( sort keys %sortdata ) {
	$value = $sortdata{$key};
	# メッセッージ番号を元へ戻す
	$key = 1000 - $key;

	# この場合、$key にメッセージ番号、$value には大きさが入ります
	print "$key = $value<BR>\n";

	# メッセージ番号に対応するテキスト行が入った
	# 配列への参照(変数名そのもの)
	$objMail = $objPop3->get($key);

	# $#$objMail が配列の最後の添え字
	print "* ---------- 全てのヘッダ情報<br>\n";
	for( $i = 0; $i <= $#$objMail; $i++ ) {
		print $$objMail[$i] . "<br>\n";
	}

	print "* ---------- 個別ヘッダ情報<br>\n";
	# 該当メールメッセージを解析する
	# MIME::Entity を返します
	$entity = $objParse->parse_data($objMail);

	# MIME::Headを返します
	$head = $entity->head;

	# 該当ヘッダ情報を文字列で返します
	$data = $head->get('From');
	chomp($data);
	print "From : $data<br>\n";

	$data = $head->get('To');
	chomp($data);
	print "To : $data<br>\n";

	print "* ---------- Subject情報<br>\n";
	# Subject のみデコードしているが、From や To にも必要
	$data = $head->get('Subject');
	chomp($data);
	print "Subject : $data<br>\n";

	# キャラクタセット毎の配列が返される
	@decode = decode_mimewords( $data );
	# 配列の要素は、さらにデータとキャラクタセットの配列となる
	$text = "";
	foreach $data ( @decode ){
		# $data に @ を付けて配列扱い
		($target,$charset) = @$data;
		# キャラクタセットは入っていない場合もある
		print "charset=$charset<br>\n";
		# ここでは、shift_jis に固定変換(本来は$charset で決める)
		Jcode::convert(\$target, 'sjis', 'jis');
		# 改行を置換
		$target =~ s/\n//g;
		$text .= $target
	}
	print "Subject : " . $text;
	print "<br>\n";
	

	print "* ---------- 本文情報<br>\n";
	# MIME::Body を返します
	$body = $entity->bodyhandle;

	# 本文を文字列として返します
	$data = $body->as_string;
	# shift_jis へ変換
	Jcode::convert(\$data, 'sjis', 'jis');
	# trim
	$data =~ s/^\s+//;
	$data =~ s/\s+$//;
	print $data . "<br>\n";

	print "<br><br><br>";
}


# 接続解除
$objPop3->quit;
  










yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[webparts]
claudebot
24/03/29 06:34:03
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube