PEARのmimedecode.phpでiphoneの添付データが取得できない問題について

このQ&Aのポイント
  • PEARのmimedecode.phpを使用して、iphoneからのメールの添付データを取得できない問題について質問させていただきます。
  • 携帯電話から動画データをメールに添付し、サーバーで保存するスクリプトを作成していますが、iphoneからのみ添付データが取得できません。
  • 他のsoftbank機からは正常に動作しているため、iphone独特の問題かもしれません。iphoneのメールに関する情報をお持ちの方、ご教示いただけますと幸いです。
回答を見る
  • ベストアンサー

PEARのmimedecode.phpでiphoneの添付データが受け

PEARのmimedecode.phpでiphoneの添付データが受け取れません。 お世話になります。 いま携帯電話からメールに動画データを添付して、投稿用アドレスにメール送信すると、サーバーがメールの受信をトリガーとして、添付データを抜き出して保存するスクリプトをPHPで作っています。メールの解析にPEARのMimeDecodeを使用しています。Docomo、au、Softbank(iphone以外)からは正常に添付データを取得できるのですが、iphoneからのみ取得できません。 iphoneからのメールは以下の通りです。 送信元:hogehoge@softbank.ne.jp 投稿先:toukou@mailserver.co.jp 添付データ:IMG_0001.3gp //---ここからメールの情報 Return-Path: <hogehoge@softbank.ne.jp> Delivered-To: Received: (qmail 11046 invoked from network); 6 May 2010 14:21:16 +0900 Received: from unknown (HELO fw.mailserver.co.jp) (202.216.xx.xx) by www.mailserver.co.jp with SMTP; 6 May 2010 14:21:16 +0900 Received: from server.softbank.ne.jp ([202.179.204.xxx]:38700) by fw.mailserver.co.jp.co.jp with smtp (Exim 4.69) (envelope-from <hogehoge@softbank.ne.jp>) id 000000-000000-00 for toukou@mailserver.co.jp; Thu, 06 May 2010 14:36:39 +0900 Subject: =?ISO-2022-JP?B?SVBob25lGyRCRjAyaEF3SVUbKEI=?= Content-Type:multipart/mixed; boundary="MMSPart_001_39442822_7893_4738_b75f_f3073dc3b55c" From: =?ISO-2022-JP?B?GyRCPi48RhsoQiAbJEJNNTtKGyhC?= <hogehoge@softbank.ne.jp> Date: Thu, 06 May 2010 14:36:35 +0900 Message-ID: <20100506143635519275.1818@0016E68C3670> To: toukou@mailserver.co.jp Sender:hogehoge@softbank.ne.jp Mime-Version:1.0 --MMSPart_001_39442822_7893_4738_b75f_f3073dc3b55c Content-Type:text/plain;charset=ISO-2022-JP Content-Transfer-Encoding:7bit (ここに本文) --MMSPart_001_39442822_7893_4738_b75f_f3073dc3b55c Content-Disposition:Attachment;filename=IMG_0001.3gp Content-Location:IMG_0001.3gp Content-Type:video/3gpp;name=IMG_0001.3gp Content-Transfer-Encoding:base64 (添付ファイルのデータ) //---ここまでメールの情報 他のsoftbank機からは正常に動いていますので、なにかiphone独特のものがあるのでしょうか? メールの事について知識がなく困っています。iphoneのメールに関して、何かヒントになるような情報をお持ちの方がいらっしゃいましたら、ご教示くださいませんでしょうか? よろしくおねがいします。

  • PHP
  • 回答数1
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.1

例示されたメールのヘッダではバウンダリが解釈されないためにPEARエラーを起こしますね。 それがライブラリの不具合なのか、メールが仕様に準拠していないだけなのか、あるはそれ以外の理由があるのかは分かりまねます。

manimani2
質問者

お礼

お返事ありがとうございます。iphoneと他機種のメール仕様について、少し調べて見ることにします。まずは取り急ぎお礼まで。ありがとうございました。助かりました。

manimani2
質問者

補足

最終的にPEARのmimeDecode.phpの内部を修正することで解決できました。送信元のメーラーの仕様なのか、Contents-Typeとboundaryとの間に改行が入っていた点を(バウンダリが長いので、一行におさまらず2行目にまわしている?)、正規表現を書き足し、一行にまとめた所、正常に処理できるようになりました。iphone以外にもdocomoのXperia、PCで使うメーラーだとWindows LIVE Mailも同様にバウンダリが2行に渡るケースがありましたが、上記の方法でまとめて解決できました。ありがとうございました。

関連するQ&A

  • PEARのmimeDecodeについて

    お世話になります 下記スクリプトにてメールをPHPで受け取ることは出来ているのですが、 画像データの処理について教えて頂けないでしょうか? $FromAddress,$Subject,$MailBodyとそれぞれの変数で取得したデータはデータベースに格納出来ています。 しかし、添付されている画像データを取り出してデータベースに格納する所でつまずいています。 // ファイルを保存 $fp = fopen("/tmp/". time() . $type, "w"); $length = strlen($part->body); fwrite($fp,$part->body,$length); fclose($fp); 上記部分で画像データは取得出来ていると思われるのですが、データベースに格納出来るデータに変更するための処理をアドバイス願います。 宜しくお願いします ちなみにPHP4です #PHPファイル########################### /////////////////////////////////// //PEARのパスを設定 require_once 'Mail/mimeDecode.php'; #-- メールデータの取得 $params['include_bodies'] =true; $params['decode_bodies'] =true; $params['decode_headers'] =true; $params['input'] = file_get_contents("php://stdin"); //標準入力 $params['crlf'] = "\r\n"; $mail_data = Mail_mimeDecode::decode($params); #-- From $FromAddress = $mail_data->headers['from']; $FromAddress = addslashes($FromAddress); //エスケープ処理 $FromAddress = str_replace('"','',$FromAddress); #-- 署名つきの場合 preg_match("/<.*>/",$FromAddress,$str); if($str[0]!=""){ $str=substr($str[0],1,strlen($str[0])-2); $FromAddress=$str; } #-- Subject フィールドの取得 $Subject = $mail_data->headers['subject']; $Subject = mb_convert_encoding($Subject,"UTF-8","JIS"); #-- 本文の取得 switch(strtolower($mail_data->ctype_primary)){ case "text": //テキストメール $MailBody = $mail_data->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS"); break; case "multipart": //マルチパート(添付ファイル(画像前提)付) foreach($mail_data->parts as $part){ switch(strtolower($part->ctype_primary)){ case "text": $MailBody = $part->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS"); break; case "image": $type = strtolower($part->ctype_secondary); // jpg,gif,png以外の画像形式は受け付けない if($type != "jpeg" and $type != "jpg" and $type != "gif" and $type != "png"){ continue; } // ファイルを保存 $fp = fopen("/tmp/". time() . $type, "w"); $length = strlen($part->body); fwrite($fp,$part->body,$length); fclose($fp); break; } } break; default: $MailBody=""; }

    • ベストアンサー
    • PHP
  • PEAR の Mail_mimeDecodeで

    お世話になります 下記スクリプトにてメールを受信してDBに格納しようと思っています DBに格納後、メールサーバからメールを消したいのですが、メールボックスを空にするためにの処理を教えて頂けないでしょうか? 宜しくお願いいたします。 /////////////////////////////////// //PEARのパスを設定 require_once 'Mail/mimeDecode.php'; #-- メールデータの取得 $params['include_bodies'] =true; $params['decode_bodies'] =true; $params['decode_headers'] =true; $params['input'] = file_get_contents("php://stdin"); //標準入力 $params['crlf'] = "\r\n"; $mail_data = Mail_mimeDecode::decode($params); #-- From $FromAddress = $mail_data->headers['from']; $FromAddress = addslashes($FromAddress); //エスケープ処理 $FromAddress = str_replace('"','',$FromAddress); #-- 署名つきの場合 preg_match("/<.*>/",$FromAddress,$str); if($str[0]!=""){ $str=substr($str[0],1,strlen($str[0])-2); $FromAddress=$str; } #-- Subject フィールドの取得 $Subject = $mail_data->headers['subject']; $Subject = mb_convert_encoding($Subject,"UTF-8","JIS"); #-- 本文の取得 switch(strtolower($mail_data->ctype_primary)){ case "text": //テキストメール $MailBody = $mail_data->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS"); break; case "multipart": //マルチパート(添付ファイル(画像前提)付) foreach($mail_data->parts as $part){ switch(strtolower($part->ctype_primary)){ case "text": $MailBody = $part->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS"); break; case "image": $type = strtolower($part->ctype_secondary); // jpg,gif,png以外の画像形式は受け付けない if($type != "jpeg" and $type != "jpg" and $type != "gif" and $type != "png"){ continue; } // ファイルを保存 /* $fp = fopen("/tmp/". time() . $type, "w"); $length = strlen($part->body); fwrite($fp,$part->body,$length); fclose($fp); */ break; } } break; default: $MailBody=""; }

    • ベストアンサー
    • PHP
  • iPhoneについて

    iPhoneの機種変について質問があります。 現在 A docomoのアンドロイド(2年半たってます) B SoftbankのiPhoneの二台持ちをしています。 今後、AndroidをdocomoのiPhoneに機種変しようと 思うのですがiPhoneが二代になるのでSoftbankのiPhoneを解約し1台のみにしようと思うんですが。。。 SoftbankのiPhoneでのパズドラのデータ、LINEのデータをdocomoのiPhoneへ移すことはできるのでしょうか?

  • iPhone4のデータ移行について

    softbankのiPhone3GからauのiPhone4に変更しました。 iTunesを使ってデータを移行しましたが、 アドレス帳だけが移行されませんでした。 (写真などのデータは移行されていました。) また、前のiPhone3G本体のアドレス帳も消えてしまいました。 データの移行の仕方を教えてください。 また、メールのアドレスが変わったためか、 メールにも不具合が出ました。 「メールを取得できません」 「メールアカウント設定でパスワードを入力してください」 というメッセージが出たので、設定し直しましたが、 うまくできませんでした… こちらの設定方法も教えてください。 よろしくお願いします。

  • 古いiPhoneのメールデータのみ保存可能?

    使用していないiPhoneを売却したいのですが、メールのデータだけを保管しておくことは可能でしょうか?現在もiPhone使用していますがSoftbankからUQに変えたらうまくデータを転送できませんでした。(私のやり方に問題があったのかもしれません)今は前のiPhoneのメールデーターのみを残る方法、またそれが次回の機種変更の際に今のiPhoneからのデータ移行の際に追加できるかを知りたいです。宜しくお願いいたします。

  • iPhoneへのデータ移行について

    携帯電話に詳しい方、宜しくお願いします。 家族に勧められてiPhoneへの切り換えを検討しています。 現在使用しているのはSoftBankの「912T」というかなり古い機種です。 メモリーカードに電話帳や画像データ、ムービー、着うたフル、メールのバックアップを取っていますが これらのデータはiPhoneへ移すことはできるのでしょうか? 何やら電話帳の移行すら大変らしくSoftBankのアプリでは上手く移行できないため Windowsを使った方が楽だと言う意見をネットでよく見掛けます。 私はPCを持っていないので電話帳の移行すら苦労しそうです。 また、iPhoneに対応していない着うたフルサイト(利用頻度高)もあるので余計迷っています。 私が何よりも重視しているデータは過去に取った着うたフル・画像・メールです。 もしこれらがiPhoneに移行できないのならほどほどに新しいiPhone以外の機種にしようと思っています。 長文失礼致しました。アドバイス宜しくお願い致します。

  • iphone5の留守電をデータでメール添付したい

    Iphone5ユーザーです。3歳になる娘が、平日に保育園から帰ってくると、私の携帯に電話をしてくるようになりました。私は仕事中なのでほとんど出れないのですが、留守電に「早く帰ってきて遊ぼー」などとかわいいメッセージを残してくれます。これをデータで保存して、メール添付したり、FACEBOOKに投稿したりできれば親なども喜ぶのでいいなあと思うのですが、どなたか方法が分かれば教えていただけると助かります。 ちなみに、ソフトバンクの留守番電話プラスには加入しております。これにより、Iphone5での保存、再生はできるのですが、データを持ち出し(メール添付等)はできないようです。ソフトバンクショップにも確認したのですが、Iphone以外のスマホであれば、ボイスメッセージアプリをダウンロードすれば可能とのことですが、Iphoneでは不可と言われてしまいました。。 アナログな方法でも良いので、宜しくお願いします。

  • iPhoneからの添付ファイル

    iPhoneからもらった添付ファイルを保存するとmicroSDに勝手に保存されるみたいなんですけどデータフォルダにはありません。 一体どこに保存されてるんですか?(´;ω;`) ちなみに機種はSH-01Bです。

  • iphoneでメール受信できない対処方

    質問です。 ここ2、3日前からソフトバンクiphoneの相手からのメール受信において、 受信自体はするのですが、下記の様なエラー文が表示されてしまい、 本文が表示されなくなってしまいました。 解決方法をご存知の方、宜しくお願いします。 <状況詳細> (1)ソフトバンクiphoneからの新規作成メール、返信メール共に下記のエラーが出てしまいます。 (2)ソフトバンク側iphoneでは、こちらのメールが閲覧可能。 (3)PCメールからの受信は問題なくauiphone側で閲覧可能 (4)文頭にもありますが、ここ2、3日前までは問題なく同じアドレスから受信できてました。 ※下記がエラー文になります。  素人ですので、よくわかりませんが、メールアドレス(個人情報)に関係しそうな部分の 数字のみ「***」とさせて頂いてます。 *B****@i.softbank.jp> <DF**F*A*-***E-****-BD**-*******C*EF*@ezweb.ne.jp> From: "ソフトバンクアドレス@i.softbank.jp" <ソフトバンクアドレス@i.softbank.jp> Content-Type: text/plain; charset=iso-2022-jp X-Mailer: iPhone Mail (9A405) In-Reply-To: <DF**F*A*-***E-****-BD**-*******C*EF*@ezweb.ne.jp> Message-Id: <****A*BA-*AFF-**A*-B**D-****FEA*DC**@i.softbank.jp> Date: Thu, 23 Feb 2012 22:57:11 -0500 To: "auアドレス@ezweb.ne.jp" <auアドレス@ezweb.ne.jp> Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (1.0) X-SB-Service: Virus-Checked 宜しくお願いします。

  • iPhone4のデータ通信無しでの利用

    iPhone4についての質問です。 解約済みの端末のSoftBankのiPhone4でOS5.1.1があります。 これに、通話のみの契約のソフトバンクSIMをカットして入れたら電話と番号でのショートメールは使えるのでしょうか?通話のみでメルアドも無いSoftBankのガラケーのSIMです。 ポケットWi-Fiがあるのでデータ通信がいりません。 基本的にSoftBankではiPhoneのデータなし契約はできない事は知っています。もし、先駆者や同様の利用をしている方いらっしゃいましたら教えてください。 ※脱獄やSIMロック解除アダプタは考えていません。

専門家に質問してみよう