• 締切済み

au携帯のメールヘッダの扱いについて MIME::Headでsubjectやfromフィールドの値が取得できません

自分宛てのメールで送信元を判断して自動応答していたのですが、auの携帯メールでは、以下の用にFROMとメールアドレスの間に改行があるためか、MIME::Parser->head->get('From')が空になってしまいます。また、MIME::Parser->head->stringifyでヘッダ全体をとろうとするのですが、三行目のFROM:で切れてしまいます。メール本文もMIME::Parser->bodyhandle->as_lineでは、先頭一行しか取得できない状態です。何か対処方法は無いのでしょうか? ---- メールヘッダ部 ------- Subject: Re:どこでん<index> From: 99999@ezweb.ne.jp Date: Sun, 24 Jul 2005 14:50:32 +0900 To: xxxx@example.net -----------ここまで------------ よろしくお願いします。

noname#93729
noname#93729
  • Perl
  • 回答数1
  • ありがとう数2

みんなの回答

  • geso775
  • ベストアンサー率29% (15/51)
回答No.1

>auの携帯メールでは、以下の用にFROMとメールアドレスの間に改行があるためか、 MIME::Parser->head->get('From')が空になってしまいます。 get自体はFrom:を正規表現で判定して取得だと思うので上記だとしたら無理な気がします。 面倒ですが、MIMEを用いずにNet::POP3で取得したメールリストから該当のメールを受信(Pop3->list) した情報を独自にヘッダ解析(ターゲットの次を取得)などすれば取得は可能かと思います。

参考URL:
http://digit.que.ne.jp/work/index.cgi?Perl%A5%E1%A5%E2%2FPerl%A4%C7%A5%E1%A1%BC%A5%EB%A4%F2%BC%F5%A4%B1%A4%EB#i0
noname#93729
質問者

お礼

今回使用していたメールは、テスト用に作成したものと判明しました。 このため、実際のau携帯のメールで確認した所問題なく取得できました。 お騒がせして申し訳ありませんでした。

関連するQ&A

  • 携帯からメールのヘッダは覗けないでしょうか?

     携帯でもヘッダを覗ければ真の送信元を特定し、プロバイダに密告することも可能になりますが、携帯の悪戯メールが多いのも、ヘッダを覗けず真の送信元を特定できない仕様になっていることを知っているからだと思います。 PCに自動的に転送し、メールソフトでヘッダを調べても「Received: from *.ezweb.ne.jp」で、EZwebを介して送信された形でしか表示されず、真の送信元が書き換えられてしまうシステムになっています。  メールのヘッダを完全に覗くことのできる方法や機種はないのでしょうか? ※ヘッダの例 Return-Path: <*@*.ne.jp> Received: from *.*.ne.jp by *.ne.jp (RCPT_GW) id WAA01841; Sat, 05 Jul 2003 22:39:48 +0900 (JST) Received: from *.ezweb.ne.jp (*.ezweb.ne.jp [###.###.###.###]) by *.*.ne.jp (nkrw/5008050603) with ESMTP id h65DdlU01835 for <*@*.ne.jp>; Sat, 5 Jul 2003 22:39:48 +0900 (JST) Received: from *.ezweb.ne.jp ([###.###.###.###]) by *.ezweb.ne.jp (InterMail vM.5.01.02.00 ###-###-###-###-####) with ESMTP id <*.*.ezweb.ne.jp@*.ezweb.ne.jp> for <*@*.ne.jp>; Sat, 5 Jul 2003 22:39:47 +0900 Received: from *.ezweb.ne.jp ([###.###.###.###]) by *.ezweb.ne.jp (InterMail vM.5.01.02.00 ###-###-###-###-####) with ESMTP id <*.*.*.ezweb.ne.jp@*.ezweb.ne.jp> for <*@ezweb.ne.jp>; Sat, 5 Jul 2003 22:39:47 +0900 Message-ID: <*> From: "*" <*@*.ne.jp> To: <*@ezweb.ne.jp> Subject: =*

  • メールヘッダのMIMEエンコードについて

    今、CGIでメールを送信するフォームを作成しているます。 日本語のsubjectを使う場合はMIMEエンコードをしなければいけないと聞いてmime_plsというライブラリで試してみたのですが、受信した結果、「1月1日」→「1 月 1 日」のように半角数字と全角文字の間にスペースが入ってしまいます。 これはどうしたらよいのでしょうか。 コードは以下のように書いています。 $mon = substr($reserveday, 4, 2); $day = substr($reserveday, 6, 2); $subject = sprintf("%d月%d日の件について", $mon, $day); &Jcode::convert(\$subject, 'jis'); $from = &mimeencode($from); $to = &mimeencode($to); $subject = &mimeencode($subject); $contents .= "本文"; &Jcode::convert(\$contents, 'jis'); my $send_buf=''; $send_buf .= "From: $from\n"; $send_buf .= "To: $to\n"; $send_buf .= "Subject: $subject\n"; $send_buf .= "Content-Type: text/plain; charset=iso-2022-jp\n"; $send_buf .= "Content-Transfer-Encoding: 7bit\n"; $send_buf .= "Mime-Version: 1.0\n"; $send_buf .= "\n"; $send_buf .= $contents; # メール送信 open(MAIL,"| $sendmail -t -i -f $from"); print MAIL $send_buf; close(MAIL); よろしくお願いします。

    • ベストアンサー
    • Perl
  • メールヘッダーの解析について

    お疲れ様です。 お世話になっています。 今空メールのシステムを作っていて、Fromの取得について困っています。 今まではstdinで1行ごと取得して、FROMで始まる行の<>の中みを取得というやりかたをしていたのですが、とあるメールサーバーからくるメールが FROM: =?MIME_ENCODE?= <test@example.com> と2行になっていて、取得に失敗していました。 なので1行ずつ取得をやめて、 ヘッダーのFROM:から次の内容までを1要素とした配列が作れればいいなと思い、今取り組んでいる状態です。 つまり、 FROM: =?MIME_ENCODE?= <test@example.com> RETURN_PATH:<test@example.com> SUBJECT:=?MIME_ENCODE?= があれば、 $header['FROM']="=?MIME_ENCODE?= <test@example.com>"; $header['RETURN_PATH']="<test@example.com>"; $header['SUBJECT']="=?MIME_ENCODE?="; としたいということです。 うまくこの形に収めるためには正規表現が必要だと思うのですが、 別の方法でもこの形に収めるにはどうしたらよいでしょうか。 よろしくお願いします。

    • 締切済み
    • PHP
  • ParserにおけるSubjectの取得

    現在、特定のアドレスに送られてきたメールを別のメールアドレスに送信する、といったCGIを作成しています。 メールを標準入力で取得し、Parserを用いて解析を行っているのですが、どうしてもSubjectの取得がうまくいきません。 下記のように入力しています。 my $parser = new MIME::Parser; $parser->output_to_core(1); my $entity = $parser->parse(\*STDIN); $subject = $entity->head->get('Subject'); これを別のメールに送って確認してみると、subject = \x83e\x83L\x83X\x83g\x83\x81\x81[\x83\x8Bといった表示になります。 $subject = decode_mimewords($entity->head->get('Subject')); といった形も試してみたのですが、結果は同様でした。 Fromのほうは別の処理を用いて正常に表示できたのですが、そちらの処理をSubjectに適用しても結果は上記のようなものでした。 しばらく解決策を検索してみたりしたのですが、解決には至りませんでした。助言のほう、よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • PHPでezweb宛メール

    下記のプログラムでezwebアドレスにメールを送信しようとしてますが、ヘッダ部分に本文が記述され、本文部分は空で送信されてしまいます。 Docomoやvodafoneは正常な動作が確認できました。 本文の文字コードをShift_JISとかにしてみましたが変化はありませんでした。 ご教授願います。 --- // 送信先 $from = "TEST <test@hogehoge.net>"; $to = "test@ezweb.ne.jp"; $rtpath = "test@hogehoge.net"; // Subject $subject = "テスト件名"; $subject = "=?iso-2022-jp?B?" .base64_encode(jcodeconvert($subject,0,3)) ."?="; // メールヘッダ $head = "From: $from \n"; $head .= "Mime-Version: 1.0 \n"; $head = "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n"; $head .= "Content-Transfer-Encoding: 7bit \n"; if($rtpath){ $head .= "Return-Path: $rtpath \n"; } // 本文 $body = "テスト本文 \n"; $body .= "テスト本文 \n"; $body .= "\n"; $body = jcodeconvert($body,0,3); // 送信 mail($to,$subject,$body,$head);

    • 締切済み
    • PHP
  • メールの特定にphpを使っているのですが、From欄のアドレスを取得す

    メールの特定にphpを使っているのですが、From欄のアドレスを取得するために、 if (eregi("From:[ \t]*([^\r\n]+)", $head, $freg)) { としていましたが、GmailやYahooメールだと、ヘッダーにDomainKey-Signatureがあり、その中のfrom:がヒットしてしまいます(Fromのメールアドレスが取得できない)。上手く取得する方法はありませんでしょうか?

    • ベストアンサー
    • PHP
  • 知人からのなりすましメールの発信者特定について教えていただけますか?

    近頃、なりすましメールが毎日毎日届きます。 それ自身の内容は私の知人しか知らないことなので、 知人が送ってきていると思います。 犯人は数名に絞られているのでヘッダの中身等で特定できたら・・と思っています。 以下にヘッダをペーストします。 X-Message-Status: n X-SID-PRA: 「なりすまし」@ezweb.ne.jp X-SID-Result: TempError X-Message-Info: 6sSXyD95QpWBcBzyC7El2I8d0oegRe32m/jfwz6HOZ8= Received: from vip ([61.115.207.131]) by MC6-F27.hotmail.com with Microsoft SMTPSVC(6.0.3790.211); Sun, 24 Jul 2005 23:55:26 -0700 Received: from [192.168.1.28] by vip (ArGoSoft Mail Server Plus for WinNT/2000, Version 1.61 (1.6.1.9)); Mon, 25 Jul 2005 15:49:35 DATE: 25 07 05 15:49:35 From: 「なりすまし」@ezweb.ne.jp To: 「私のアドレス」 Subject: =?iso-2022-jp?B?UmU6==?= Message-ID: <dlgev0oscnrpujp.250720051549@vip> Return-Path: 「なりすまし」 X-OriginalArrivalTime: 25 Jul 2005 06:55:26.0198 (UTC) FILETIME=[D5FD3960:01C590E5] 本当に、本当に困っております。 ですから分かる方、 どうか情報をよろしくお願いいたします。

  • Perl+UTF8で文字化け

    以下の環境にてメール送信プログラムを作成していますが、 ありがちな文字化け、且、ボディーが表示されない不具合が発生しています。 サーバ:linux apache レンタルサーバ ※Encode.pm、Jcode.pm無し。モジュールインストール不可。 Perl version: 5.006001 ソースエンコード:utf-8 自分の解釈としてはutf8で記述しているので、 charset=utf-8にしておけば、 MIMEエンコードさえしてやれば 表示できると考えているのですが、 やはり甘い考えなのでしょうか? また、同サイト質問NO2868794も参考にさせていただきましたが、上手くいきません。 以下ソース(エンコード:utf-8) use utf8; use MIME::Base64; use POSIX; ※アドレス表記はこのサイトの投稿チェックに引っかかるので省略します。 my $to = 'XXXX@XXXX'.XXX; my $from_nm = "送信者名"; my $from_adr = "XXXXX@XXX.XXX"; my $subject = "メール表題"; my $body = "本文"; # 送信者名を MIME エンコード encode_base64($from_nm,""); # subjectを MIME エンコード encode_base64($subject,""); $subject = "=?utf-8?B?" . $subject . "?="; # 本文を MIME エンコード encode_base64($body); my $MailPass = "XXXX/XXXX/XXX"; #SendMail Pass open(MAIL,"| $MailPass -t"); #======================================================== print MAIL <<"EOF_MAIL"; From: $from_nm<$from_adr> To: $to Subject: $subject Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: base64 MIME-Version: 1.0 $body EOF_MAIL #======================================================== close MAIL; その他、色々ググっては見たのですが、自分ではみつけられず、 どうかアドバイスありましたらよろしくお願いいたします。

  • Outlook 2007 (試用版)でメールのヘッダを見る方法は?

    表題のとおりなのですが、 Outlook 2007 (試用版)でメールのヘッダを見る方法がわからず、 悩んでいます。 なお、ここでヘッダと言っているのは、 差出人:・・・ 宛先:・・・ というヘッダではなくて、 以下のようなものです。 ======================================== Delivered-To: example@example.com ・・・(中略)・・・ Received: (qmail **** invoked by uid ***); 17 Jan 2007 **:**:** +0900 Date: 17 Jan 2007 **:**:** +0900 Message-ID: <example@example.com> To: example@example.com Subject: hogehoge Reply-To: example@example.com From: fugafuga <example@example.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit ======================================== Outlook2003の場合はわかったのですが、 2007になってインターフェースが結構変わってしまい、 わからなくなってしまいました。 よろしくお願いします。

  • sendmailで特定のアドレスにメールが送れない

    お世話になります。 sendmailからメールを送ろうとしているのですが、特定のアドレスに送れません。 SMTP; 550 5.7.1 Header contents violates site policy contact administrator 上記のエラーが返ってきます。 ヘッダが違反しているとのことみたいですが、どこが不足・間違っているのかわからないため教えていただけないでしょうか。 Return-Path: <xxxx@xxxx> Received: from xxxx (xxxx [127.0.0.1]) by xxxx (8.13.8/8.13.8) with ESMTP id r416LPmn002359 for <xxxx@xxxx>; Wed, 1 May 2013 15:21:28 +0900 Received: (from root@localhost) by xxxx (8.13.8/8.13.8/Submit) id r416LOJu002358; Wed, 1 May 2013 15:21:24 +0900 Date: Wed, 1 May 2013 15:21:24 +0900 From: xxxx@xxxx Message-Id: <201305010621.r416LOJu002358@xxxx> To: xxxx@xxxx Subject: test MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit 上記のヘッダはエラーとして戻ってきたメールのものです。 アドレス等は伏せさせていただきました。 よろしくお願いします。

専門家に質問してみよう