私が今回質問したいのはメールサーバー(POP3)にて取得したメールの題名の中で特定の内容が含まれている場合、そのメールに添付してあるものをFTPサーバーに転送するというシステムです。
詳しく言うと、たとえば先頭に"UP"という文字があるとそれより後ろの文字をFTPサーバー内のアドレスだと決めてそこへ添付されたファイルをUPさせたいんです。
(例)[UP User/Photo]という題名のメールが来た場合、その指定したFTPサーバー内のUser/Photoと言う場所に添付ファイルを送信するというシステムです。
厳しいところも含まれているとは思いますが、どう組めばいいかお聞かせください。
No.2ベストアンサー
- 回答日時:
Net::POP3でメールを受信して、MIME::Parser で
Subject:からのコマンド解析と添付ファイルの抽出・ファイル保存を行い、
http://homepage3.nifty.com/hippo2000/perltips/rc …
Net::FTP で保存したファイルのアップロード
http://www.itmedia.co.jp/enterprise/articles/080 …
すればいいでしょう。
アップロードが終わったらファイル削除を忘れずに。
それと、アップロード先のディレクトリがあるかどうかは確認した方がいいでしょうね。手を抜くなら、「UP User/Photo」なんかの時には問答無用でアップロード前に「User」と「User/Photo」のディレクトリ作成するだけでもいいでしょう。
この回答への補足
ご回答ありがうございます。
やりたい内容等としてはピッタリなのですが、
>MIME::Parser で
Subject:からのコマンド解析
が良く分かりません。
因みにひとつのplの中で他のサーバーと同時にログイン等ということは可能なのでしょうか?
#!/usr/bin/perl
use File::Basename;
use MIME::Parser;
use Net::POP3;
use Net::FTP;
#POPサーバに接続
my $pop = Net::POP3->new('サーバー名', Timeout=> 120) || die "Cound\'t Connect to POP server\n";
$pop->login('ユーザ名', 'パスワード') || die "Authentication failed\n";
#メールのリストを取得(メッセージ番号 => サイズ からなるハッシュリファレンス)
my $list_href = $pop->list;
#メールを一通づつ取得
foreach my $msg_id (keys %$list_href){
my $message = $pop->get($msg_id); #メールを取得
print @$message;
$pop->delete($msg_id); #メールを削除
}
my $parser = MIME::Parser->new;
#ファイルの一時保存場所を指定
$parser->output_dir('/一時保存');
#標準入力からメールを取得
my $entity = $parser->parse(*STDIN);
#FromとSubjectのみ取り出し
$entity->head;
my $from = $header->get('From');
my $subject = $header->get('Subject');
#添付ファイルがある場合のみ処理
if($entity->is_multipart){
#パートの数(本文と添付ファイルの合計数)
$count = $entity->parts;
#メール本文以外(添付のみ)を取り出し(本文は0番目のため、一番目から取り出し)
for($i = 1; $i < $count; $i++){
#ファイル名を含むパスを取り出し
$path = $entity->parts($i)->bodyhandle->path;
#ファイル名を取り出し
$filename = (fileparse($path))[0];
#添付ファイルを書き出し
open(FILE, "> /添付/$filename");
print FILE $entity->parts($i)->bodyhandle->as_string;
close(FILE);
}
}
$ftp = Net::FTP -> new("");
$ftp -> login("","");
$ftp -> binary;
$ftp -> cwd ("/tmp");
$ftp -> put ("/data/test");
$ftp -> quit;
書き方が汚くて申し訳ありませんが、この場合だと既にメールサーバーにログインしてるのでこのまま>$ftp -> cwd ("/tmp");<でメールサーバーを指定しても大丈夫なのでしょうか?
No.1
- 回答日時:
この回答への補足
すいません、私が考えているのとは多少違います・・・。
個人で使うのではなく複数の人数で使うので、
Perl・CGIが分らない人が使うときに使いやすいものを作ろうと考えております。
なので、メールサーバーに一度送ったものをFTPへUPしなければなりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー Googleドライブなどを使わずにテザリングAndroidでWindowsとファイル共有 1 2023/02/19 13:14
- その他(メールソフト・メールサービス) このメールは何ですか 8 2023/06/15 17:31
- その他(メールソフト・メールサービス) メールソフトを教えてください 1 2023/03/28 23:32
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- サーバー サクラサーバーについてゾーン設定について教えてください 1 2023/06/11 02:16
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- Outlook(アウトルック) アイホンで撮った写真を一枚だけPCに移し画像を縮小してWebメールに添付して送信する方法 1 2022/04/22 15:33
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- その他(教育・科学・学問) 新卒です。 1つ応募したい企業があって履歴書などを提出するのですが、「下記3点のフォーマットをダウン 3 2023/02/26 14:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
youtubeに音声のみのmp4ファイ...
-
携帯からファイルアップロード...
-
アップロードできるファイルサ...
-
ファイルのアップロードがどう...
-
PHPのファイルアップロードにつ...
-
大きいサイズのファイルのアッ...
-
ftpでアップロードが出来ない
-
BASP21のFTPで日本語ファイル名...
-
VBでクラウドストレージにア...
-
ファイルアップロードの上限を...
-
アップロードするとバックスラ...
-
phpでPEAR::DBを使っているので...
-
フォントの色を変えるには?
-
php5-extensions を make でき...
-
PHPのみでの背景色は指定できる...
-
リンク先を隠す方法はないでし...
-
index.phpって何ですか? 具体...
-
トランザクションが原因?DBに...
-
CFileDialogの最初のディレクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
one drive のアップロード失敗...
-
youtubeに音声のみのmp4ファイ...
-
wixの使い方について
-
ftpでアップロードが出来ない
-
「クラウドにアップロード」」...
-
ファイルサイズがpost_max_size...
-
VBでクラウドストレージにア...
-
大容量のファイルアップロード...
-
画像ファイルの名前をそのままU...
-
どうして送信されないのでしょ...
-
ファイルアップロードの上限を...
-
PHPでxmlをAPIに送信する方法(P...
-
ファイルをGET送信でアップロー...
-
unlinkでどうしてもファイルが...
-
FTPClientで転送結果(OKかFAIL)
-
ファイルのアップロードでパス...
-
$filePath = './user_img/' . $...
-
FTP接続の例外処理
-
move_uploaded_fileについて
おすすめ情報