参考にしたサイト
まずはこちらのサイト。
マルチパートなメールを解析する PEAR::Mail::mimeDecode をラップするクラス - お前の予定!! 日記
マルチパートまで対応しているようですが、とりあえずは単純テキストメールが受け取れればと。
参考にしつつ書いたのが下記。
<?php // 件名を取得 $subject = mb_convert_encoding($structure->headers['subject'], "UTF-8", "jis"); // 本文を取得 switch (strtolower($structure->ctype_primary)) { case "text": $body = mb_convert_encoding($structure->body, "UTF-8", "jis"); break; case "html": $body = mb_convert_encoding($structure->body, "UTF-8", "jis"); break; default: $body = ""; } ?>
これで取り敢えずメール件名とメール本文を受け取れた。
最終的には下記のサイトのまとめと近い形かな、と。
ほぼこんな感じになっています。
<?php #-- PEAR の Mail/mimeDecode.php を読み込む 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']; #-- To フィールドの取得 $ToAddress = $mail_data->headers['to']; #-- Subject フィールドの取得 $Subject = $mail_data->headers['subject']; $Subject = mb_convert_encoding($Subject,"UTF-8","JIS"); #-- 本文の取得 $MailBody = $mail_data->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS"); ?>
これらから必要な情報を抜き出して、DBにINSERTします。
メール本文を配列に格納
メール本文を「改行テキストを配列に変換する」事でまずは操作しやすく変換します。
<?php $array = explode("\n", $text); // とりあえず行に分割 $array = array_map('trim', $array); // 各要素をtrim()にかける $array = array_filter($array, 'strlen'); // 文字数が0のやつを取り除く $array = array_values($array); // これはキーを連番に振りなおしてるだけ ?>
そして配列の回数分ループさせ、必要なタイミングのみDBにインサートする、と。
本当はfor派
ループはforで回すのが好きです。
でもPHPではforeachで回すのがスタンダードの様です。
という訳でforeachで回したいと思います。
<?php foreach ($array as $value) { // ループ内処理 } ?>
TABLE枠組み参考用
列1 | 列2 | 列3 | 列4 | 列5 |
---|---|---|---|---|
内容1 | 内容2 | 内容3 | 内容4 | 内容5 |
全角英数字を半角英数字に
誤り
<?php // 全角数字を半角数字に変換 $value = mb_convert_kana($value, 'rns'); ?>
正しくは
<?php // 全角数字を半角数字に変換 $value = mb_convert_kana($value, 'rns', 'UTF-8'); ?>
また、ドハマリしてしまいました(-_-;
以前この記事で解決していたのに忘れてました(^-^;
ファイルへの追記
テキストファイルに送信してきたメールアドレスを保持したいのですが、追記できず上書きされます(T_T)
<?php file_put_contents('mail.txt', $mail); ?>
うぅむ。
第三引数に「FILE_APPEND」を記述すればよかったようです(^-^)w
<?php file_put_contents('mail.txt', $mail, FILE_APPEND | LOCK_EX); ?>
PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE)
- 作者: 鈴木憲治,山田直明,山本義之,浅野仁,櫻井雄大,安藤建一
- 出版社/メーカー: 翔泳社
- 発売日: 2013/10/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (8件) を見る
PHPの現在時刻取得
ソースは下記。
<?php echo date("Y/m/d G:i:s"); ?>
出力は
2015/06/09 16:10:25
の様に出力される。
SQL文
ソート順の指定。
SELECT "フィールド名"
FROM "テーブル名"
[WHERE "条件"]
ORDER BY "フィールド名" [ASC, DESC];
さっきエラーになるなぁと思ったら「DESK」と書いていた・・・。
正しくは「DESC」
BASIC認証の導入
ある特定のPHPファイルにだけアクセス制限を掛けたい!
参考にしたのは下記!
<File>タグで個別に指定する事で特定のPHPファイルにだけアクセス制限を掛けられる!
<Files wp-login.php> : : </Files>
これは便利ですね~(^-^)w