忍者ブログ
気になった内容を自分メモとして記述。 ある程度まとまったところで、Chips集として意味を持たせられれば幸いです。 まずは色々内容を増やしていきます。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

現在、実際に作成して学校のサーバで動作確認している
メール受信をキーに起動するphpプログラム
( password などは適時自分の環境に合わせて読み替えて下さい)

1. サーバの設定( /.forward )で、受信メールをphpへ送るように設定
http://chiraura.ria10.com/Entry/38/
2. 1通目の受信メールをDBに登録
3. 2通目の受信で、1通目との時刻の差分を返信内容に記載して返信(秒単位のみ、時間・分切り捨て)
4. DBから登録を削除
5. 2-4. を繰り返す

<?php
 require_once ("/home/user/pear/php/Mail/mimeDecode.php");

 mb_language("Japanese");
 mb_internal_encoding("SHIFT-JIS");

 #-- メールデータ取得
 $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");

 $c_name = $FromAddress;
 $c_from = $FromAddress;
 $c_subj = $Subject;
 $c_mess = $MailBody;
 $c_time = date("Y-m-d H:i:s");

 // DB関連の処理
 $url = "localhost";
 $user = "root";
 $pass = "password";
 $db = "db_name";

 // MySQLへ接続
 $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
 //DBを選択
 $sdb = mysql_select_db($db, $link) or die ("データベースの選択に失敗しました。");
 //クエリを送信する
 //メールアドレスをキーにselect
 $sql = "SELECT c_from, c_time FROM tb_mailtimer WHERE c_from = '$FromAddress'";
 $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

 //結果セットの行数を取得する
 $rows = mysql_num_rows($result);

 //見つかる→返信アドレスに設定後、削除、見つからない→insert
 if ($rows) {
    while($row = mysql_fetch_array($result))
     {
        $db_to = $row["c_from"];
        $db_time2 = $row["c_time"];
     }
    //結果保持用メモリを解放
     mysql_free_result($result);
    //削除
    $sql = "DELETE FROM tb_mailtimer WHERE c_from = '$FromAddress'";
    $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

    //時間の比較
    $datetime1 = strtotime($c_time);
    $datetime2 = strtotime($db_time2);
    $interval1 = ($datetime1 - $datetime2);
    $interval2 = date( 's秒', $interval1 );
    $message = $interval2;
   
    //メール処理
    if (!mb_send_mail($db_to, "自動返信", $message, "hoge@hoge.ne.jp")) {
        exit("メールの送信に失敗しました。");
    }
    //echo("メールを送信しました。");
    } else {
    $sql = "INSERT INTO `tb_mailtimer` ( `c_iden`, `c_name`, `c_from`, `c_subj`, `c_mess`, `c_time` ) VALUES ( '0000', '$FromAddress', '$FromAddress', '$Subject', '$MailBody', '$c_time' ) ";
    $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
    }

 //MySQLへの接続を閉じる
 mysql_close($link) or die ("MySQL切断に失敗しました。");
?>

PR
思いつきの更新

忘年会がありまして、お酒を飲んだのですが、
カクテルって数百(あっても千数百)通りくらいあるのかな。

有名どころから順番に登録していって、
メールでカクテル名を送ると、情報を返す。というシステムなら
簡単に構築できないかな。

というわけで忘れないうちにメモ。

PHPとTwitterの連携についてメモ

外部からつぶやいたりするには、
OAuth認証と呼ばれる認証方式が必要とのこと。

携帯向けのサービスである、
メールでTwitter 機能 を使えば、もっと簡単に出来るのでは?
と思って探してみたところ

本機能を使用すると、
Twitter投稿専用のメールアドレスが発行され、
そのアドレス宛てにメールを送ることでつぶやかれるとのこと。
ただし、ドメインで判別しているらしく、
携帯キャリア外のドメインは弾かれてしまう。
(docomo.ne.jp や softbank.ne.jp など)

PHPでのメール関数

例//メール処理 (勿論、変数を引数に出来る。)
mb_language("Japanese");
mb_internal_encoding("EUC-JP");

    if (!mb_send_mail(送信先, 件名, 内容, 送信元)) {
    exit("メールの送信に失敗しました。");
    }
    echo("メールを送信しました。");

2種類のmail関数

■1. mail()
デフォルトでは、日本語のメールを送れない。
メールの仕様がマルチバイト文字を許可していないため、
エンコードが必要となる。

■2. mb_send_mail()
言語設定、内部エンコーディングを指定することで、
マルチバイト文字も送れる。
例//mb_系の関数を使う場合は、必ず言語設定を行うようにする。
    mb_language("Japanese");
    mb_internal_encoding("EUC-JP");

参考サイト
http://d.hatena.ne.jp/thunderbo1t/20100725/1280048804
http://oshiete.goo.ne.jp/qa/4904846.html?from=recommend
http://oshiete.goo.ne.jp/qa/2393841.html

デフォルトの設定でインストールすると、5.1のはず。
<確認方法>
1. phpinfo() を走らせる。
2. コマンド
$ php -v
PHP 5.1.6 (cli) (built: Mar 31 2010 02:44:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

cat /etc/redhat-release centos のバージョン確認
uname -a の末尾を確認
「x86_64 x86_64 x86_64 GNU/Linux」 or 「i686 i686 i386 GNU/Linux」

<実行>
標準のリポジトリには PHP 5.3 が存在しないようなので、remiというリポジトリを追加。
wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm
wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

ここではまった。
centos -version で OSがi386 なのか、x86-64 なのかチェックし忘れ、
i386が正しいのに、x86-64を入れてしまい延々と時間をとられた。

mysql → php じゃないと面倒があるとの記事を見つけたので、
sudo yum --enablerepo=remi install mysql
sudo yum --enablerepo=remi install php
/etc/rc.d/init.d/httpd restart

$ php -v
PHP 5.3.3 (cli) (built: Jul 22 2010 16:41:20)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

自分メモ
バージョンを間違えた際、競合してインストールが上手くいかなかったので、
強制オプションを入れてインストールしたり。
rpm -Uvh --force <package>.rpm

HOMENext ≫
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
フリーエリア
最新コメント
[07/07 Abuperut]
[06/26 Stanleymync]
[06/05 Apukibul]
[06/04 Buy Cigarettes Online]
[05/31 RobertPi]
最新トラックバック
プロフィール
HN:
daigumi
性別:
非公開
職業:
会社員(システムエンジニア)
自己紹介:
連絡先・メール
gaigumi[at]gmail.com
[at]を@に置き換えるか
以下のフォームからどうぞ
メールフォームはこちら
バーコード
ブログ内検索
最古記事
(11/25)
(11/25)
(11/25)
(11/25)
(11/25)
P R
カウンター
アクセス解析
アクセス解析

Copyright © [ Handbill BACK ] All rights reserved.
Special Template : 忍者ブログ de テンプレート
Special Thanks : 忍者ブログ
Commercial message : [PR]