« IPベースのバーチャルホスト設定 | メイン | 携帯向けサイト全端末対応CGI »

xreaサーバーでOpenPne携帯投稿cron設定、スクリプト起動

Open PNE をXREAサーバーへのインストールメモ
バージョンは2.6.2

サーバーは独自ドメインで利用
以下、xreaでは必須

■config.php
define('MAIL_SET_ENVFROM', false); に変える

既定ではコメントになっており自動ログインしないので
  session_save_path('/virtual/登録したアカウント/お好きなフォルダ名');
  コメントはずして、設定

■メール設定について
default@ドメイン名
defaultと言うアカウントで登録する事により、CacheALL機能で
@ドメイン名のメールをすべて受信する事が出来る

■cronでスクリプトを実行してmail.phpにメールを渡します。


cron設定でスクリプトを実行してmail.phpに渡す。
以下をに好きな名前たとえば cronmail.sh などと付けて
/virtual/アカウント/bin に保存
cronに設定
/virtual/アカウント/bin/cronmail.sh >/dev/null 2>&1

#!/bin/sh

cd /virtual/アカウント/bin

/usr/local/bin/php /virtual/アカウント/bin/cpmail.php

exit


POPサーバ設定ファイルを作る
pop.ini.php

<?php

define('OPENPNE_DIR', realpath('/virtual/アカウント名/'));

//メールサーバーの設定

$_MS_host = "s210.xrea.com"; //POP3サーバー名 s210.xrea.com

$_MS_user = "default@s210.xrea.com"; // ユーザーID

$_MS_pass = "POPパスワード"; // パスワード

?>

以下は、cpmail.php mail.phpをコピーして作ったもの
同じく/virtual/アカウント/bin に保存

<?php chdir(dirname(__FILE__)); require_once './config.inc.php'; require_once OPENPNE_WEBAPP_DIR . '/init.inc';

// エラー出力を抑制
ini_set('display_errors', false);
@ob_start();

//ライブラリ読み込み
require_once '../lib/include/Log.php';
//require_once 'PNE/KtaiMail.php';
require_once '../webapp/lib/mail/sns.php';
require "pop.ini.php"; // POPサーバ設定ファイル
// コマンドー送信!!
function _sendcmd($sock,$cmd) {
fputs($sock, $cmd."\r\n");
$buf = fgets($sock, 512);
if(substr($buf, 0, 3) == '+OK') {
return $buf;
} else {
die("$cmd => $buf");
}
return false;
}
$sock = fsockopen($_MS_host, 110, $err, $errno, 10) or die("サーバーに接続できません");
$buf = fgets($sock, 512);
if(substr($buf, 0, 3) != '+OK') die($buf);
$buf = _sendcmd($sock, "USER $_MS_user");
$buf = _sendcmd($sock, "PASS $_MS_pass");
$data = _sendcmd($sock, "STAT");//STAT -件数とサイズ取得
sscanf($data, '+OK %d %d', $num, $size);

$raw_mail = '';
//メールがない時
if ($num == "0") {
$buf = _sendcmd($sock, "QUIT");
fclose($sock);
echo "ないとき
";
exit;
// メールがある時
}else{
echo "ある
";
$mail_array=array();
// ----- $num件のメールread後削除
for($i=1;$i<=$num;$i++) {
$raw_mail = '';//初期化
$line = _sendcmd($sock, "RETR $i");//RETR n -n番目取得
while (!ereg("^\.\r\n",$line)) {//EOFの.までread
$line = fgets($sock,512);
$raw_mail.= $line;
}
$mail_array[]=$raw_mail;//配列に追加
$data = _sendcmd($sock, "DELE $i");//DELE n n番目削除
}
$buf = _sendcmd($sock, "QUIT");
fclose($sock);

}//end メール時処理
// 1通ずつ処理
foreach($mail_array as $a_mail){
m_process_mail($a_mail);
}
m_debug_log(ob_get_contents(), PEAR_LOG_DEBUG);
while (@ob_end_clean());
//メール処理

function m_process_mail($raw_mail)
{
$options['from_encoding'] = MAIL_FROM_ENCODING;
$options['to_encoding'] = 'UTF-8';
$options['img_tmp_dir'] = OPENPNE_VAR_DIR . '/tmp';
$options['img_max_filesize'] = IMAGE_MAX_FILESIZE * 1024;
$options['trim_doublebyte_space'] = OPENPNE_TRIM_DOUBLEBYTE_SPACE;

$decoder =& new OpenPNE_KtaiMail($options);
$decoder->decode($raw_mail);

$from = $decoder->get_from();
$to = $decoder->get_to();

if (!db_common_is_mailaddress($from) || !db_common_is_mailaddress($to)) {
m_debug_log('mail.php::m_process_mail() ERROR code 3');
return false;
}

list($to_user, $to_host) = explode("@", $to, 2);

// check prefix
if (MAIL_ADDRESS_PREFIX) {
if (strpos($to_user, MAIL_ADDRESS_PREFIX) !== 0) {
m_debug_log('mail.php::m_process_mail() missing prefix');
return false;
}
$to_user = substr($to_user, strlen(MAIL_ADDRESS_PREFIX));
}

if ($to_host === MAIL_SERVER_DOMAIN) {
$mail_sns =& new mail_sns($decoder);
if (!$mail_sns->main()) {
m_debug_log('mail.php::m_process_mail() ERROR code 1');
return false;
}
} else {
m_debug_log('mail.php::m_process_mail() ERROR code 2');
return false;
}

return true;
}

//デバッグ用ログ保存
function m_debug_log($msg, $priority = PEAR_LOG_WARNING)
{
if (!MAIL_DEBUG_LOG) return;

$log_path = OPENPNE_VAR_DIR . '/log/mail.log';
$file =& Log::singleton('file', $log_path, 'MAIL');

mb_convert_encoding($msg, 'JIS', 'auto');
$file->log($msg, $priority);
}

?>

ファイル保存時は文字コード、改行コードに注意してください。
改行コードなどの影響で実行されない場合があります。

About

2007年08月06日 11:06に投稿されたエントリーのページです。

ひとつ前の投稿は「IPベースのバーチャルホスト設定」です。

次の投稿は「携帯向けサイト全端末対応CGI」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Tacci.biz