質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • PHP

    20848questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    6018questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • PEAR

    144questions

    PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。

Mail_mimeDecodeで本文が取得できない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 446

u-sukesan

score 56

メールを送信しサーバー側でphpに転送。

転送先PHP内、下記のコードで取得した内容をDBに保存しようとしていますが
本文($diary_body)だけが取得できません。
デバッグのために、マルチパートの画像処理はスキップしています。

PHP7.0
Mac
送信元メール Gmail

mb_language("japanese");
mb_internal_encoding("UTF-8");

$input = file_get_contents("php://stdin");
$decoder = new Mail_mimeDecode($input);
$structure = $decoder->decode($params);

//--------------------------------------------------
//fromを抽出
//--------------------------------------------------
$frommail=$structure->headers['from'];
$frommail = addslashes($frommail); 
$frommail = str_replace('"','',$frommail);
//署名付きの場合の処理を追加 
preg_match("/<.*>/",$frommail,$str); 
if($str[0]!=""){ 
   $str=substr($str[0],1,strlen($str[0])-2); 
   $frommail = $str; 
  }

//--------------------------------------------------
//件名を抽出
//--------------------------------------------------
$subject = mb_convert_encoding(mb_decode_mimeheader($structure->headers["subject"]),mb_internal_encoding(), "auto");


//--------------------------------------------------
//本文を抽出
//--------------------------------------------------
    switch(strtolower($structure->ctype_primary)){
        case "text": // シングルパート(テキストのみ)
            $diary_body = $structure->body;
            break;
        case "multipart":  // マルチパート(画像付き)
            foreach($structure->parts as $part){
                switch(strtolower($part->ctype_primary)){
                    case "text": // テキスト
                        $diary_body = $part->body;
                        break;
                    case "image": // 画像
                        /*
                        //画像の拡張子を取得する(小文字に変換
                        $type = strtolower($part->ctype_secondary);
                        //JPEGチェック(GIFやPNG形式の画像チェックなども可
                        if($type != "jpeg" and $type != "jpg"){
                            continue;
                        }

                        //添付内容をファイルに保存
                        $fp = fopen("/tmp/picture.jpg" . $type,"w" );
                        $length = strlen( $part->body );
                        fwrite( $fp, $part->body, $length );
                        fclose( $fp );
                        */
                        break;
                }
            }
            break;
            default:
            $diary_body = "";
    }


//この後DB格納処理
//$frommail=OK;
//$subject=OK;
//$diary_body=NG;
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

原因はわかりませんが、解決しました。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

  • 解決済

    Googleスプレッドシートのスクリプトエディタでswitch文が上手くいかない

    プログラミングはまだ初心者です。 Googleスプレッドシートのスクリプトエディタを使っています。 Googleフォームで送られた内容をある形でメールに送るものを作っています。

  • 受付中

    添付ファイル名が文字化けします。

    メールに添付ファイルをつけて配信したいのですが 届いたメールの添付ファイル名が文字化けしています。 どうすれば文字化けが直るのでしょうか? よろしくお願いいたします。

  • 受付中

    Googleドキュメントのフォーム機能からGoogle Apps Scriptを使ってメール送信する...

    実現したいこと googleフォームからメール送信したいのですが、 件名に2つ以上の項目を動的に表示させる方法がわかりません。 WEB上で、 function se

  • 受付中

    「『Google Apps Script』を使って『Google Forms』でメールを送信する方法...

    ■■な機能を実装中に以下のエラーメッセージが発生しました。 発生している問題・エラーメッセージ 色々試しましたが動きません。よくわかっていないので教えていただくと助かります

  • 解決済

    C言語課題 一対の括弧を書き足す

    プログラミング考え方 以下の問題をc言語でどう解いたらいいかわかりません。  問題 一対のかっこを書き足すことにより、次式正しく一対のかっこを書き足すことにより、次の式正し

  • 解決済

    php7での仕様変更?

    先日このサイトでお聞きしたことの派生なのですが、メールをトリガーとしてphpを起動させるという方法についてお教えください。 メールをトリガーとしてphpを起動させる方法については当

  • 解決済

    PHPで画面遷移が遅い

    PHP+JAVASCRIPTでプログラムを書いていますが 画面の遷移が遅くて困っています。 テキストボックスに入力した値を、JAVASCRIPTで拾い JAVASCRIPTから

  • 解決済

    PHPからのメールで文字化けする

    phpで一斉メールを送ろうと思っています。 お名前コムの共有サーバーを使っています、下記テストで30人ほどに一斉送信を繰り返したところ 一度負荷がかかり過ぎという事で制限をされた際

同じタグがついた質問を見る

  • PHP

    20848questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • MySQL

    6018questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • PEAR

    144questions

    PEAR (PHP Extension and Application Repository)はPHPで利用する事ができるライブラリです。