下記のメールにメールヘッダーが加味されています。
Return-Path: support@qtnet.ne.jp
Received: from 10.1.55.94 (LHLO z-oha-vzmta041-sv.z-seg.bbiq.jp)
(10.1.55.94) by z-oha-vzmbs151-sv.z-seg.bbiq.jp with LMTP; Fri, 3 Oct 2014
03:02:18 +0900 (JST)
Received: from localhost (localhost [127.0.0.1])
by z-oha-vzmta041-sv.z-seg.bbiq.jp (Postfix) with ESMTP id 430A6159134
for <usui@ori.bbiq.jp>; Fri, 3 Oct 2014 03:02:18 +0900 (JST)
X-Spam-Flag: NO
X-Spam-Score: 1
X-Spam-Level: *
今日は暑かった。元気にしているかな。夏バテしない様にしっかりと水分補給を怠らない様にね。
スタート状態とか、yymore,unputを考えていますが中々良いアイデアが浮かびません。この例では例えば、Received {BEGIN HEADER;}として、次は、<HEADER>[ |\t] {/* No Action*/}
とした場合、<HEADER>[^ |\t] {BEGIN 0;}としても、今度は、この時のトークンが処理されずに
ゴミとして残ります。
本当は、<HEADER>[^ |\t]の時に、BEGIN 0;としてバッファから読んだトークンを再度バッファに
返して処理を続行させたいのですが。方法が分かりません。
最終的には、メールからメールヘッダーを除去した、今日は暑かったから始まる行のみを表示するflexのコードをお教え願います。
No.3ベストアンサー
- 回答日時:
mbox形式だとして。
https://ja.wikipedia.org/wiki/Mbox
多くのツールがインポートできたりそのまま使用できたりします。
メール振り分けのできるものも多いです。
http://search.cpan.org/~dcoppit/Mail-Mbox-Messag …
http://docs.python.jp/2/library/mailbox.html
等を使えば、必要な箇所だけ出力、といったこともできるでしょう。
ただ、本当に「Return-Path:」から始まっていて、ヘッダと本文の間に空行が無いなら、mboxとは違う形式なので、対応できるかわかりません。
有難う御座います。確認した所、ヘッダーと本文との間には空行が有ります。ヘッダーは必ず最初は、Return-Path:から始まっています。CPANにperlのモジュールが有る様です。私は使った事は有りません。
やりたい事は、mboxからヘッダーを除去して本文を抽出するだけです。その時、メールの区切りが分からなくなるので、その識別を本文の最後に追加する。例えば、EndOfMailとかです。
ここ迄出来れば、後の処理は何とか出来ます。但し、この時にFrom,Date,Subjectの要素は必ず無いといけません。私は、perlしか分かりません。perlのバージョンは、v5.20.1です。
windows7,ActivePerlを使っています。該当するperlのページを見ましたが良く分かりません。ヘッダーを除去して本文のみを抽出すると言うのはperlのモジュールでも出来るのでしょうか。
今は、perlで処理をするのかlexが良いのかは良く分かりません。アドバイスをお願いします。
No.2
- 回答日時:
これって lex 使うようなものなのかなと思ったりするわけだが, それはさておき.
・まず「ヘッダーはReturn-Pathから始まる様です」が気になる. メールを 1つずつチェックするなら「ヘッダが何からはじまるか」って問題にならない (それこそ「最初から処理する」だけでいい) はずだよね. ということは, 「複数のメールをまとめたなんらかの形式のファイル」を相手にしている?
・subject や from などは複数行になっていることがあるんだが, それは大丈夫?
有難う御座います。拡張子はmbxで、行数にして100万行になる。subjectや、fromは行の先頭から始まっています。1973個のメールです。実はメールの自動振り分けをやりたかったのですが。設定が面倒なので自作で作ろうとしています。
fromを見て、ホルダーに振り分けます。メールの本文については、必ずしもsubjectやdateが入っているとは限りませんのでメールヘッダーから取るつもりです。
別に作らなくても私はvimを使っているのでこれでメールの自動振り分けをしてくれるのが有れば問題は解決ですが。無いようでしたので、仕方なく自作と言う事になっています。
perlでも行けそうな気はしますが。スタート状態と言うのは、非常に便利ですから。perlでは少し面倒くさい。アドバイスをお願いします。私としては自作に固執はしていません。ツールとして良いのがあれば、それを使おうとは思っています。宜しく、お願いします。
No.1
- 回答日時:
SMTPの仕様では、ヘッダと本文は空白行で区切られているので、分離することは簡単です。
ヘッダと本文のデータを読み取る際、勝手に空白行を破棄していませんか?
読み取る処理を修正すれば、解決できるはずです。
早速のご返事有難う御座います。実は、メールヘッダーの中に
^Date:
^From:
^Subject:
上記のデータは残したいのですが。他のメールヘッダーについては、確かに空白行で簡単に削除は出来ますが。然し、それをやると全てが消えます。
どうやら、ヘッダーはReturn-Pathから始まる様です。なので、
Return-Path {BEGIN HEADER;}
<HEADER>^$ {BEGIN 0;}
<HEADER>. {/* No Action*/}
<HEADER>^Date: {printf "%s\n",yytext;}
<HEADER>^From: {printf "%s\n",yytext;}
<HEADER>^Subject: {printf "%s\n",yytext;}
上記を考えています。時間が無いので確かめる事は出来ませんが。何かアドバイスをお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
iD
-
お家デートをしててハグを長い...
-
Access 日付/時間型を検...
-
【Excel】特定の文字を含むセル...
-
IQテストの数列
-
VBAでループ内で使う変数名を可...
-
「ご処理進めて頂きますようお...
-
ExcelのToggleButtonを排他的に...
-
C# ListBoxのキーボードマッチ...
-
Do~Loopした回数をカウントしたい
-
Nortonで「除外」から「削除」...
-
処理の実行中にOutLookがまとも...
-
VBAでGetAsynckeyStatekのエラー
-
「コメントアウト」と「コメン...
-
パソコンについて GPUをCPUの代...
-
セルの値が0はクリアするマクロ
-
生活保護受給者は性欲をどんな...
-
Do Until rs1.EOF であるレコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
プログラミング言語についてc++...
-
EXCEL VBA マクロ 実行する度に...
-
UMLでの例外処理
-
switch の範囲指定
-
FFTの結果ついて
-
お家デートをしててハグを長い...
-
VBの質問#if 0 then ってどう...
-
findは動くがfindnextがマクロ...
-
離散時間フーリエ変換について
-
VB.NET Excelを読み込んでDataT...
-
インタラクティブの反対語は?
-
月度は何て読みますか?
-
リョウ・・・量?料?
-
Do~Loopした回数をカウントしたい
おすすめ情報
有難う御座います。
随分と、最初からの質問とずれて来ていますので一旦ここで閉じてからの再度の質問といたします。
ご協力ありがとうございました。