Tips

【PEAR】さくらサーバーで、受信メールの内容を取り出す

まず、さくらインターネットサーバーで以下の2点は完了しておいて下さい。
以前僕がブログ内で書いたものです。

  1. 【PEAR】さくらインターネットサーバーでPEARを使う
  2. 【空メール】さくらインターネットで、空メールからPHPプログラムを実行する。
  3. 【PEAR】さくらサーバーで、画像添付メールの画像をプログラムで取り出す。

2番で用意したPHPファイルに記述します。

1番で行ったPEARのインストール場所で記述しています。
文字エンコードは、UTF-8で書いています。

画像を保存したりしたい方は、3番を参照して下さい。

添付画像なしで、送信者アドレスと件名、本文を取得したい方のみの記述です。
多少軽くなるので、画像が必要の無い方はこちらで。

取得したメールアドレスや件名は、データーベースに登録するなり、テキストファイルに保存するなり、メールで送りなりして下さい。

————–ここから—————–

#!/usr/local/bin/php

 

<?php

//PEARのパスを設定

$path = ‘/home/(ユーザー名)/pear/PEAR/’;
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once ‘/home/(ユーザー名)/pear/PEAR/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”;

if (!$params[‘input’]) {

// 読み込み失敗

exit();

}

$structure = Mail_mimeDecode::decode($params);

//送信者のメールアドレスを抽出

$mail = $structure->headers[‘from’];

$mail = addslashes($mail);

$mail = str_replace(‘”‘,”,$mail);
$mail = preg_replace(‘/(^.*<|>$)/’, ”, $mail);

 

// 件名を取得

$subject = $structure->headers[‘subject’];

switch (strtolower($structure->ctype_primary)) {
case “text”:
$body = $structure->body;
break;
default:
$body = “”;
}

 

?>

————–ここまで—————–

 

詳細などは、【PEAR】さくらサーバーで、画像添付メールの画像をプログラムで取り出す。を参照して下さいね。
内容は画像保存以外、同じですので。

カテゴリー:PHP, Tips, さくらインターネットコメント(0)

【PEAR】さくらサーバーで、画像添付メールの画像をプログラムで取り出す。

まず、さくらインターネットサーバーで以下の2点は完了しておいて下さい。
以前僕がブログ内で書いたものです。

  1. 【PEAR】さくらインターネットサーバーでPEARを使う
  2. 【空メール】さくらインターネットで、空メールからPHPプログラムを実行する。

2番で用意したPHPファイルに記述します。

1番で行ったPEARのインストール場所で記述しています。
文字エンコードは、UTF-8で書いています。

————–ここから—————–

#!/usr/local/bin/php   //←さくらサーバーはこの記述

<?php
//PEARのパスを設定
$path = ‘/home/(ユーザー名)/pear/PEAR/’;
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once ‘/home/(ユーザー名)/pear/PEAR/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”;  //Shift_JISで記述する場合は、\を¥で。

if (!$params[‘input’]) {

// 読み込み失敗

exit();

}

$structure = Mail_mimeDecode::decode($params);

//送信者のメールアドレスを抽出

$mail = $structure->headers[‘from’];
$mail = addslashes($mail);
$mail = str_replace(‘”‘,”,$mail);
$mail = preg_replace(‘/(^.*<|>$)/’, ”, $mail);

// 件名を取得

$subject = $structure->headers[‘subject’];

// 本文、添付ファイル(画像)を抽出

switch (strtolower($structure->ctype_primary)) {
case “text”:

// シングルパート(テキストのみ)

$body = $structure->body;
break;
case “multipart”:

// マルチパート(画像付き)

foreach ($structure->parts as $part) {
switch (strtolower($part->ctype_primary)) {
case “text”:
$body = $part->body;
break;
case “image”:

// 画像の拡張子を取得する

$type = strtolower($part->ctype_secondary);

// 添付ファイル保存

$photo = “sample”.$type;

$tmpName = ‘/home/(ユーザー名)/www/dir/’ . $photo; //画像の保存場所です。

//↑必ずサーバーパスで記述します。./dir/などの相対パスでは駄目です。
今回は、サンプルで画像名は、sampleにしています。

if ($fp = fopen($tmpName, “w”)) {

$length = strlen($part->body);

fwrite($fp, $part->body, $length);

fclose($fp);

}

break;
}
}
break;
default:
$body = “”;
}

?>

————–ここまで—————–

 

保存する「dir」ディレクトリは、権限を777にして下さいね。
エラーや保存できない理由の多くは、ディレクトリの権限です。

/home/(ユーザー名)/pear/PEAR/ さくらはこれがサーバーパスです。

ちなみに、Drive Networkは、/home/(ユーザー番号)/(ドメイン)/(保存ディレクトリ)/pear/PEAR/です。

 

件名は、$subject
本文は、$bodyで取得できます。
送信者メールアドレスは、$mailで取れます。

取得したメールアドレスや件名は、データーベースに登録するなり、テキストファイルに保存するなり、メールで送りなりして下さい。

カテゴリー:PHP, Tips, さくらインターネットコメント(1)

【OSX】コードネーム一覧

Mac OSXのコードネームは猫科の動物の名前がついていて格好いいけど、結構忘れちゃうのでメモ。

Mac OS X 10.0 Cheetah(チーター)
Mac OS X 10.1 Puma(プーマ)
Mac OS X 10.2 Jaguar(ジャガー)
Mac OS X 10.3 Panther(パンサー)
Mac OS X 10.4 Tiger(タイガー)
Mac OS X 10.5 Leopard(レパード)
Mac OS X 10.6 Snow Leopard(スノーレパード)
Mac OS X 10.7 Lion(ライオン)

OSX Lion

 

 

 

 

 

 

 

 

 

 

 

 

 

カテゴリー:Mac, Tipsコメント(0)

【iPhone】viewport

最近は、通常のホームページでもiPhoneやiPadで見る人が多いので、
最低でも崩れないようにはiPhoneで見せたい。

例え、iPhone用にホームページを作っていなくてもだ。

ヘッダーに以下の2行を入れれば、とりあえず文字が大きすぎたり、小さすぎたり、ボックスがずれたりと言うことは解消される。

<meta name=”apple-mobile-web-app-capable” content=”yes” />
<meta name=”viewport” content=”minimum-scale=0.25, maximum-scale=1.0, width=device-width, user-scalable=yes” />

あとは、vieportの説明を追加しておきます。
上記は、拡大率0.25〜1.0に設定。ユーザーに拡大縮小を許可にしてあります。

<meta name = “viewport” content = “width = device-width, initial-scale = 1, user-scalable = yes”>
だと、画面はiPhoneの横幅に合わせて、初期の拡大率が1で、ユーザーに拡大縮小を許可という事です。

width デバイスの横幅 980px device-width(iPhoneの横幅に合わせる)
device-height(iPhoneの縦幅に合わせる)
height デバイスの縦幅 device-width(iPhoneの横幅に合わせる)
device-height(iPhoneの縦幅に合わせる)
initial-scale ページが最初に読み込まれた時の拡大率 1 minimum-scale と maximum-scaleの範囲に準ずる
user-scalable ユーザーに拡大縮小を許可 yes yes か no
minimum-scale 拡大率の下限 0.25 0 から 10
maximum-scale 拡大率の上限 1.6 0 から 10

※iPad、Androidも同様。

カテゴリー:iPhone, Tipsコメント(0)

【PEAR】さくらインターネットサーバーでPEARを使う

さくらサーバーは、PEARのインストール方法が簡単にできるとの事で選んだ部分もあるのだが。
ただ、簡単とはいえ、インストール後に、必要なパッケージもインストールしないといけないので、間違えないようにメモ。

まず、go-pear.txt を保存して下さい。拡張子は.phpに変更して下さい。

さくらサーバーの場合は、FTPで接続し、www/以下にgo-pear.phpをアップロードして下さい。

wwwディレクトリと同じ場所に、「pear」とディレクトリを作っておきます。
※FTPで見ると、go-pear.phpをアップしたディレクトリの一つ上です。

ブラウザで、「http://(ドメイン名)/go-pear.php」にアクセスします。

ページ下の「NEXT」を押します。

 

 

 

 

 

 

次画面は以下のように入力します。1番の項目を「/home/(自分のアカウント)/www」に。
10番を「/home/(自分のアカウント)/www/go-pear-admin.php」に。
11番を「/usr/local/bin/php」に。

後は設定せずに、「install」ボタンを押す。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

インストールが終われば、www以下に、「go-pear-admin.php」が出来ているはずです。

エディターで開いて、8行目の「$pear_dir = ‘@pear_dir@’; // default of install」の部分を、
「$pear_dir = ‘/home/(アカウント名)/pear/PEAR’; // default of install 」に変更し保存。

 

ブラウザで、「http://(ドメイン名)/go-pear-admin.php」にアクセスします。すると下記画面に。

一番下の「Quick-Install a package」に、必要なパッケージ名を入力し、クイックインストール。

画像を添付したメールを自動で文章や件名、画像と分解して、
MySQLやサーバー内に画像を保存するのには、以下のパッケージ名を入力すれば大丈夫でした。
画像分解などのやり方はまた今度。
※画面上部のWarningは、他者にアクセスされると困るので、パスワードを付けてとのアラート。

【インストールしたパッケージ】

  • Mail
  • Mail_Mime
  • Mail_MimeDecode

最後に、さくらコントロールパネルにアクセスし、サーバツールの設定→PHP言語に関する設定→php.ini設定ファイル編集で
「include_path=”.:/home/(アカウント名)/pear/PEAR”」 の一行を追加し終了です。

カテゴリー:PHP, Tips, さくらインターネットコメント(4)

【iPhone用サイト】横幅をiPhoneの画面に合わせる

iPhone用のサイトではなくても、携帯用サイトをiPhone用として表示してるサイトも多いです。

ただ、その場合、横幅が合わなく、標準ではとても画面が小さく表示されてしまいます。

横幅をiPhone用に合わせたい場合は、以下の一行をヘッダーに追加します。

もちろん、Androidもこれで対応できます。

<meta name=”viewport” content=”width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0″ />

widthには表示領域を指定することができます。直接数字を「width=980」のように入力するか、device-widthと指定します。
device-widthにすれば「portrait(縦モード)」「landscape(横モード)」問わず、横幅320pxになります。

initial-scaleは初期表示の倍率です。

例えばinitial-scale=2.0とした場合、widthが320pxであれば、2倍にズームされた状態になるので、画面には横幅160pxの内容が表示されることになります。

user-scalableはユーザーによる拡大・縮小の操作を強化するかどうかです。
値はyesかnoかいずれかの指定になります。

maximum-scaleは拡大を許可した場合の最大倍率となります。

基本的にはiPhone向けにちょうどいいサイト幅で閲覧できるようwidth=device-widthのみ指定すると良い。

<meta name=”viewport” content=”width=device-width” />

カテゴリー:iPhone, Tipsコメント(0)

【iPhone用サイト】数字や日付、電話に自動的にリンクが付かないようにする。

iPhone対応のサイトじゃなくても、普通のHTMLでサイトを作ってて、

iPhoneやiPadで見たら、リンクを設定していない電話番号のテキストや数字、2011/11/11などの日付など自動的に「tel:」が付き、リンク表示にはなるし、クリックすると電話をかけるダイアログが出てくる。

これはあまりにも駄目ですよね。

通常のサイトをiPhoneやiPadで見るのも多くなってきてる現在、1行ヘッダーに追加するだけで対処できます。

ヘッダー内に

<meta name=”format-detection” content=”telephone=no”>

この一行を入れるだけです。

これは通常のHTMLを記述する際にも、入れておいた方がいいのではないでしょうか。

カテゴリー:iPhone, Tipsコメント(0)

【空メール】さくらインターネットで、空メールからPHPプログラムを実行する。

さくらインターネットで、空メールからPHPプログラムを実行するやり方をメモ。
メールの着信をトリガーにしてPHPプログラムを起動する方法です。

  1. サクラコントロールパネルで、空メールにしたいメールアドレスを新規で作成する。例) test@test.com
  2. 作成したメールアドレスにメール転送設定を行う。すぐに消去するので、転送するアドレスは何でもいい。設定したら、すぐに転送設定を消去する。
  3. FTPでサーバーに接続し、「/home/ユーザー名/MailBox/test/」の「.mailfilter」にこの後の内容を入力する。最初は何も書いていないファイルです。もし、このファイルが存在しなかったら、「.mailfilter」のファイルを新規で作ります。
  4. 「.mailfilter」の中身を以下のようにする。cc “| /home/ユーザー名/www/test.php”
    ※サーバーによって変わるので、ご自身のサーバーのドキュメントルートを記述して下さい。
    通常さくらは、/home/ユーザー名/www/です。
    ユーザー名は、さくらインターネットの契約時に決められた名称を入れてください。
    CCの後、|の後には半角スペースが入るので注意してください。
  5. 「.mailfilter」は、パーミッション(属性)を600に変更してする。
    これで、メールを受信したら自動的に、/home/ユーザー名/www/test.phpのPHPプログラムが実行されることになる。
  6. 実行させるPHPプログラムには、空メールで受け取った際に実行したいコードを記述します。
    一行目には必ず、「#!/usr/local/bin/php」 を入れる。
    あとは、通常のPHPを書くのと同じです。ただ、ファイルを保存したりする保存場所は、間接指定「../」や直接指定「http://www〜」は使用せずに、サーバードキュメントルート「 /home/ユーザー名/www/」で指定してください。
  7. 実行させるPHPは、パーミッション(属性)を744に変更してする。
  8. 以上

これで、空メールがきたら、自動的に指定のプログラムが起動する事となります。

上記、【4】での【CC】の部分ですが、空メールをメールソフトでも受信したい場合は、【CC】にします。

ただ、【CC】だと空メールがくるたびに、メールソフトで受信しないと溜まっていきます。
メールソフトで受信せずに、プログラムを実行させるだけなら、【to】 を使います。

うまくプログラムを記述すれば、データーベースに登録したり、PEARを使えば、メールに添付された画像を取り込む事ができます。

カテゴリー:Tips, さくらインターネットコメント(2)

【サーバー】さくらサーバーで日本語ドメインの設定

弊社で今後使うために取得した日本語ドメインの設定方法をメモ。

さくらサーバーとお名前.comを使った設定方法です。

色々とサイトを確認していると先に、さくらインターネットを設定しないと動作しないとの事。
なので、間違えないように先にさくらを設定します。

弊社の日本語ドメインも設定済みです。エクスプロード.jp

さくらインターネットでの設定

  1. 日本語ドメインを取得し、Punycodeに変換する。→こちらで変換できます。
  2. FTP で、/home/ユーザ名/www の直下に、あらかじめこのドメインが使うフォルダを作成する。
    さくらインターネットはマルチドメインなのでこのように設定する。
  3. サーバ コントロール パネルにログインする。
  4. サーバ情報の表示 → サーバに関する情報を確認し、IP アドレスをメモっておく。111.11.111.11など
  5. ドメイン設定 → 新しいドメインの追加 → 【5. 他社で取得したドメインを移管せずに使う・属性型JPドメインを使う(さくら管理も含む)】を選択する。
  6. 【他社で取得された独自ドメインのサブドメインを追加】のところに、追加したいドメイン名を Punycode 形式で入力して送信する。
  7. 次の画面でマルチドメインを設定する。
    設定:「www」を付けずに運用したい場合は、「wwwを付与せずマルチドメインとして使用する(上級者向け)」を選択する。
    対象フォルダ:先程、/home/ユーザ名/www直下に作成したフォルダを指定する。
    送信して完了。

お名前.comでの設定

  1. ドメイン Navi にログインし、ドメインの設定画面に移動する。
  2. レンタル DNS レコード設定 →入力画面に進む。
    • ホスト名:Punycode 形式で記載する。(.jpや.comまで入力)
    • TYPE:A
    • VALUE:さくらコントロールパネルでメモした IP アドレスを入力。111.11.111.11など
  3. 追加して、設定内容を確定する。
  4. 「ドメイン設定」メニューから「ネームサーバー変更」をクリックします。
  5. 「ネームサーバー変更」画面で、変更したい日本語ドメイン(複数選択可)を選択し、「他のネームサーバーを利用」を選択。
  6. プライマリ:ns1.dns.ne.jp、セカンダリ:ns2.dns.ne.jp を入力し、確認画面へ進む→設定で完了。
    ※さくらインターネットのネームサーバーを入力します。画面では、お名前.comのプライマリ:01.dnsv.jp、セカンダリ:02.dnsv.jpを設定してと出るが間違いないように。
  7. DNSを設定後、切り替え作業に入ります。早ければ30分くらいで変更されますが、最高72時間かかります。

 

カテゴリー:Tips, サーバー, さくらインターネットコメント(1)

【MySQL】phpMyAdminの設定方法

データーベースを使用していると結構使う「phpMyAdmin」ですが、バージョンの変更が多く、一つ前のバージョンだと設定方法も違うので、とりあえずメモ。

今現在、ダウンロードできるphpMyAdmin3.0を説明します。

phpmyadmin.net からダウンロード

解凍ソフトで、解凍したら、フォルダ名をサーバー上で分かりやすい名称に変えます。「phpmyadmin」とか「myadmin」とか。
FTPでアップロードします。
※今回は、www.test.comの直下に「myadmin」でアップしたという事にしました。

確か、バージョン2系は、ブラウザでTOPページにアクセスすれば設定が出来たのだが、

バージョン3から出来なくなってるっぽいので、手動で設定します。

「myadmin\config.sample.inc.php」をコピーして、「config.inc.php」に名前を変更

以下を修正

17行目あたり
$cfg[‘blowfish_secret’] = ‘test’; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

29行目あたり
$cfg[‘Servers’][$i][‘auth_type’] = ‘cookie’;
他には、「config」「http」など
「config」にして、ユーザー名とパスワードを設定しなければ、誰でもアクセスできる認証になる。超危ないけど。

$cfg[‘Servers’][$i][‘host’] = ‘localhost’;
普通は「localhost」でいいが、サーバーによって「server5.xxx.jp」などになる所もある。
$cfg[‘Servers’][$i][‘extension’] = ‘mysql’;

43行目あたり //でコメント化されてますので、使用する場合は「//」を取る。
$cfg[‘Servers’][$i][‘controluser’] = ‘MySQLのユーザ名’;
$cfg[‘Servers’][$i][‘controlpass’] = ”MySQLのパスワード;

今回の例での「myadmin」ディレクトリは、ベーシック認証かIP制限などした方が絶対にいいですよ。

 

IP制限はエクスプロード・ラボでも提供中。

ベーシック認証はエクスプロード・ラボでも提供中。

カテゴリー:MySQLコメント(0)