アプリ版:「スタンプのみでお礼する」機能のリリースについて

下記のメールにメールヘッダーが加味されています。
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の回答に寄せられた補足コメントです。 補足日時:2015/08/12 12:49

A 回答 (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とは違う形式なので、対応できるかわかりません。
この回答への補足あり
    • good
    • 0
この回答へのお礼

有難う御座います。確認した所、ヘッダーと本文との間には空行が有ります。ヘッダーは必ず最初は、Return-Path:から始まっています。CPANにperlのモジュールが有る様です。私は使った事は有りません。

やりたい事は、mboxからヘッダーを除去して本文を抽出するだけです。その時、メールの区切りが分からなくなるので、その識別を本文の最後に追加する。例えば、EndOfMailとかです。

ここ迄出来れば、後の処理は何とか出来ます。但し、この時にFrom,Date,Subjectの要素は必ず無いといけません。私は、perlしか分かりません。perlのバージョンは、v5.20.1です。

windows7,ActivePerlを使っています。該当するperlのページを見ましたが良く分かりません。ヘッダーを除去して本文のみを抽出すると言うのはperlのモジュールでも出来るのでしょうか。

今は、perlで処理をするのかlexが良いのかは良く分かりません。アドバイスをお願いします。

お礼日時:2015/08/11 10:41

これって lex 使うようなものなのかなと思ったりするわけだが, それはさておき.



・まず「ヘッダーはReturn-Pathから始まる様です」が気になる. メールを 1つずつチェックするなら「ヘッダが何からはじまるか」って問題にならない (それこそ「最初から処理する」だけでいい) はずだよね. ということは, 「複数のメールをまとめたなんらかの形式のファイル」を相手にしている?
・subject や from などは複数行になっていることがあるんだが, それは大丈夫?
    • good
    • 0
この回答へのお礼

有難う御座います。拡張子はmbxで、行数にして100万行になる。subjectや、fromは行の先頭から始まっています。1973個のメールです。実はメールの自動振り分けをやりたかったのですが。設定が面倒なので自作で作ろうとしています。

fromを見て、ホルダーに振り分けます。メールの本文については、必ずしもsubjectやdateが入っているとは限りませんのでメールヘッダーから取るつもりです。

別に作らなくても私はvimを使っているのでこれでメールの自動振り分けをしてくれるのが有れば問題は解決ですが。無いようでしたので、仕方なく自作と言う事になっています。

perlでも行けそうな気はしますが。スタート状態と言うのは、非常に便利ですから。perlでは少し面倒くさい。アドバイスをお願いします。私としては自作に固執はしていません。ツールとして良いのがあれば、それを使おうとは思っています。宜しく、お願いします。

お礼日時:2015/08/11 01:34

SMTPの仕様では、ヘッダと本文は空白行で区切られているので、分離することは簡単です。



ヘッダと本文のデータを読み取る際、勝手に空白行を破棄していませんか?
読み取る処理を修正すれば、解決できるはずです。
    • good
    • 0
この回答へのお礼

早速のご返事有難う御座います。実は、メールヘッダーの中に
^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;}

上記を考えています。時間が無いので確かめる事は出来ませんが。何かアドバイスをお願いします。

お礼日時:2015/08/10 15:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!