下記のメールにメールヘッダーが加味されています。
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で質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- 英語 下記はなんていってますか? こんにちは以降、訳していただけたら助かります。 Hello, We’re 1 2023/01/14 00:09
- HTML・CSS cssの display: flex;で横並びにならずに困ってます 1 2022/12/04 13:18
- Outlook(アウトルック) 休みが明けてメールをみたらやばいです 3 2022/08/17 09:03
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- 英語 The Twilight Zone1959に関するCBSの回答について 1 2023/03/02 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
【Excel】特定の文字を含むセル...
-
メルカリのメルカードで買い物...
-
VBAでループ内で使う変数名を可...
-
switch の範囲指定
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
VBA SaveChanges 上書きされない
-
VBの質問#if 0 then ってどう...
-
C言語 b += a ? 1 : 0; の意味
-
UMLでの例外処理
-
リョウ・・・量?料?
-
月度は何て読みますか?
-
iD
-
findは動くがfindnextがマクロ...
-
VBAでGetAsynckeyStatekのエラー
-
TextBoxに日付を自動的に入れる
-
ビープ音を連続して鳴らす
-
VB.NET Excelを読み込んでDataT...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
月度は何て読みますか?
-
switch の範囲指定
-
VBの質問#if 0 then ってどう...
-
セルの値が0はクリアするマクロ
-
VB.NET Excelを読み込んでDataT...
-
Do~Loopした回数をカウントしたい
-
Loadイベント中にほかのイベン...
-
Select Case文でこのようなこと...
-
findは動くがfindnextがマクロ...
-
緊急です。 知り合いから50kgの...
-
リョウ・・・量?料?
-
理不尽、行き場のないイライラ...
おすすめ情報
有難う御座います。
随分と、最初からの質問とずれて来ていますので一旦ここで閉じてからの再度の質問といたします。
ご協力ありがとうございました。