# 添付ファイルの一括保存 # 言語:Perl # その他:BASP21(汎用コンポーネント:RcvMail,ReadMail,StrConvを利用) # #**********メールアカウント、ファイル保存場所などの設定 $mail_server = '(適宜)'; # POP3サーバー名:利用するアドレスにあわせて設定 $mail_usr = '(適宜)'; # ユーザー名:利用するアドレスにあわせて設定 $mail_pass = '(適宜)'; # パスワード:利用するアドレスにあわせて設定 $mail_command = 'SAVEALLD'; # コマンド:全メールを受信し、POP3サーバーから削除 # (サーバーに残す場合は、'SAVEALL') $mail_folder = 'c:\\mail'; # メールの保存用のディレクトリ:適宜変更可能 # 注意:\\は2つ必要 #**********OLEパッケージの使用 use Win32::OLE; #**********Basp21オブジェクトの作成 $BASP = Win32::OLE -> new('basp21'); #**********メール保存用のディレクトリの作成 mkdir($mail_folder); #**********メールを受信し保存 $raRcv = $BASP -> RcvMail($mail_server,$mail_usr,$mail_pass,$mail_command,$mail_folder,); #**********メールの読込み、添付ファイルの保存 if (ref($raRcv)) { # リファレンスかどうかのチェック foreach $sFile (@$raRcv) { $raRead = $BASP->ReadMail($sFile, 'subject:',""); # メールの件名の読み込み if(ref($raRead)) { # 件名に含まれる全角文字を半角文字に変換 @$raRead[0] = $BASP->StrConv(@$raRead[0],8); # Subject(件名)の初めから半角3文字を”組” $kumi = substr(@$raRead[0],9,3); # Subject(件名)の4文字目から2文字を”番号” $ban = substr(@$raRead[0],12,2); # メール保存用の下に組名のディレクトリの作成 mkdir($mail_folder . "\\" . $kumi); # 組名の下に番号名のディレクトリの作成 $file_folder = $mail_folder . "\\" . $kumi . "\\" . $ban; mkdir($file_folder); # 添付ファイルを番号名のディレクトリに保存 $raRead = $BASP->ReadMail($sFile, 'file:',">" . $file_folder); } else { print "ERROR"; } } print "完了\n"; } else { print "ERROR: $raRcv\n"; } #**********メール保存用のディレクトリからメールの削除 unlink glob($mail_folder . "\\*.txt");