作者 主題: 使用 PHP 發送 MSN 訊息  (閱讀 166295 次)

0 會員 與 1 訪客 正在閱讀本文。

湯姆貓

  • 活潑的大學生
  • ***
  • 文章數: 475
    • 檢視個人資料
使用 PHP 發送 MSN 訊息
« 回覆 #60 於: 2007-10-31 14:18 »
剛才發現用php -f msnbot.php後
另一台的MSN就發現他有上線了.

直接下./msnbot.php
[root@www msnbot]# ./msnbot.php
Extension './msnbot.php' not present.

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
使用 PHP 發送 MSN 訊息
« 回覆 #61 於: 2007-10-31 14:39 »
檔案是 DOS 格式? 換行字元不對?
php 不在 /usr/bin/php ?

湯姆貓

  • 活潑的大學生
  • ***
  • 文章數: 475
    • 檢視個人資料
使用 PHP 發送 MSN 訊息
« 回覆 #62 於: 2007-10-31 14:54 »
Bingo~~ 我使用dos2unix將msnbot.php轉換一下....
就通通正常了~~

感謝twu2~~~

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
使用 PHP 發送 MSN 訊息
« 回覆 #63 於: 2007-11-11 10:35 »
更新 phpmsnclass 版本為 1.8.

異動記錄:

    * 修正 sendMessage() 中的 $re_login undefined 錯誤.
    * 忽略所有 text/x- 與 application/x- 的訊息, 只處理已知的訊息.
    * 修正在收到 NS 送來的 XFR 訊息, 要求重新連線時, 會重送前一個訊息的問題.
    * 修正 $hdr_TotalDataSize1 與 $hdr_TotalDataSize2 undefined 的錯誤.
    * 新增個人訊息 (PSM) 的支援.
    * 修改 doLoop() 的參數, 改用陣列來傳送參數, 方便以後新增參數時的處理.
    * 有多個收件者時, 不再使用群組發送的方式, 改為每個收件者使用獨立的 switchboard 來處理.
    * sendMessage() 的 $aTo 參數, 如果只有一個收件者時, 允許使用字串而非陣列.
    * 修正接收到 Yahoo 訊息的換行問題.
    * 訊息大小 (含檔頭) 目前已經被限制為 1664 (WLM) 位元組與 518 (YIM) 位元組. 超過這個大小時, 可能會有錯誤, 而收件者也無法收到訊息. 如果有大於這個限制的訊息, 會分開傳送.  (不過 YIM 在接收時, 有時順序會與發送順序不一樣)

檔案請到 Google Code 抓取.

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #64 於: 2007-12-19 16:00 »
各位前輩:
小弟參照此篇,想做個主機監控+MSN通知!!
目前寫了一小段Shell,如下:
代碼: [選擇]
#/bin/sh
#$Ping URL
URL="192.168.0.1"
TO="TO:xxx@msn.com"
TIME=`date +%Y年%m月%d日%H時%M分%S秒`
MSG="PING BAD! Cool"
echo "$TIME"
TTL=`ping -c 200 -w 2 $URL | head -2 | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 3 | cut -d '=' -f 2`
if [ "$TTL" > "0" ]; then
    echo "icmp="$icmp
    echo "TTL="$TTL
    echo "URL="$URL
  echo "I="$i
    echo "Good"
        else
    echo "icmp="$icmp
    echo "TTL="$TTL
    echo "URL="$URL
    echo "I="$i
    echo "Bad"
         `echo $TO > /var/spool/msnbot/spool/msn.msn | echo $MSG  $TIME >> /var/spool/msnbot/spool/msn.msn | chmod 666 /var/spool/msnbot/spool/msn.msn`
fi
想請教兩個問題,
Q1
因為我有看到msnbot.php此檔說明,要傳輸中文字的話要使用UTF8,那小弟該如何轉檔,iconv?小弟有測試過,不過因為不知道預設產生的msn.msn此檔是何種編碼,所以試不出來,請問我如果想傳輸中文該如何改寫?
Q2
此程式有規定傳檔的格式是:
代碼: [選擇]
TO:xxx@msn.com
傳輸內容
不過小弟寫入\n無法換行,不知道這部分要如何寫,所以小弟用了比較笨的方式,分兩次給,也請教此部分要如何改寫?或是各位前輩有更好的建議?之後我還想針對各個服務來監測,所以問題會很多,請多加包函.
Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #65 於: 2007-12-19 16:29 »
1. 看你要直接輸入 UTF-8 的中文還是用 iconv 轉碼都可以. 如果都不會, 那就用英文就好了. 反正 MSN 只能用 UTF-8 來傳就對了. 至少英文是 UTF-8 的子集, 一定可以用.
2. 直接 echo 引號內的字串分好幾行寫, 是後一行再加上引號就可以. 如果不行... 也許你不是用 linux 上頭的 bash 吧. 我也不知道你的 shell 要怎麼用... 自己想辦法處理吧, 不然就用 perl 或 php 之類的程式去產生檔案吧.

jaymsa

  • 活潑的大學生
  • ***
  • 文章數: 409
  • 性別: 男
    • 檢視個人資料
    • Jay's Blog
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #66 於: 2007-12-20 09:08 »
1. 看你要直接輸入 UTF-8 的中文還是用 iconv 轉碼都可以. 如果都不會, 那就用英文就好了. 反正 MSN 只能用 UTF-8 來傳就對了. 至少英文是 UTF-8 的子集, 一定可以用.
2. 直接 echo 引號內的字串分好幾行寫, 是後一行再加上引號就可以. 如果不行... 也許你不是用 linux 上頭的 bash 吧. 我也不知道你的 shell 要怎麼用... 自己想辦法處理吧, 不然就用 perl 或 php 之類的程式去產生檔案吧.
謝謝...關於於轉碼的部分我終於試出來了,再請教個問題請問msnbot.php這個檔案的作用是?msnbot.sh呼叫msnbot.php來處理傳送訊息嗎?
Linux真好玩...博大精深!!
RHCE,ISO27001,ISO20000
http://jayclub.no-ip.org/jayblog

bau720123

  • 可愛的小學生
  • *
  • 文章數: 16
  • 性別: 男
    • 檢視個人資料
    • 9191交易王
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #67 於: 2008-08-08 14:40 »
twu2跟網路上的朋友們大家好
我叫做小包
我有一個問題請教
我是使用Windows平台用的事Appserv
使用
$msn = new MSN('MSNP9', true);
通訊協定一切正常

但當我想嘗試用
$msn = new MSN('MSNP15', true);
就會出現錯誤訊息如下msn.class.php
We need mhash module for MSNP15!
We need mcrypt module for MSNP15!

我有爬文~我也真的把php.ini前面的分號取消
extension=php_mcrypt.dll
extension=php_mhash.dll
重開過Apache

但卻沒出現mcrypt或是mcrypt的相關字眼訊息
請問這個部份要怎麼在WIN平台上解決會比較好了
謝謝大家 
« 上次編輯: 2008-08-08 15:20 由 bau720123 »
邁向神乎其技的境界^^

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #68 於: 2008-08-08 16:01 »
載入 php_mcrypt.dll 與 php_mhash.dll 之後, 再跑都沒有任何訊息了嗎?

bau720123

  • 可愛的小學生
  • *
  • 文章數: 16
  • 性別: 男
    • 檢視個人資料
    • 9191交易王
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #69 於: 2008-08-08 18:31 »
是的
phpinfo裡面就沒有出現這兩個模組的相關設定
比方是mbstring載入後
就會出現一個mbstring的模組資訊在phpinfo中
但是mhash跟mcrypt沒有諸如此類得訊息
我也故意把msn.class.php的以下判斷敘述拿掉
if ($protocol != 'MSNP9' && !function_exists('mhash')) {
            if ($protocol == 'MSNP15') die("We need mhash module for $protocol!\n");
            $protocol = 'MSNP9';
        }
        if ($protocol != 'MSNP9' && !function_exists('mcrypt_cbc')) {
            if ($protocol == 'MSNP15') die("We need mcrypt module for $protocol!\n");
            $protocol = 'MSNP9';
        }
想當然而螢幕上也會顯示錯誤訊息
Fatal error: Call to undefined function mhash() in C:\AppServ\www\msnclass\msn.class.php on line 1041
這一行是一個function
function derive_key($key, $magic)
    {
        $hash1 = mhash(MHASH_SHA1, $magic, $key);
        $hash2 = mhash(MHASH_SHA1, $hash1.$magic, $key);
        $hash3 = mhash(MHASH_SHA1, $hash1, $key);
        $hash4 = mhash(MHASH_SHA1, $hash3.$magic, $key);
        return $hash2.substr($hash4, 0, 4);
    }
所以我還是覺得這兩個module我沒有裝好
所以才會請教您這個問題
不好意思打擾到您了
謝謝

另外
http://linux.tnc.edu.tw/techdoc/php/php_big5/ref.mhash.html
網頁中有說這個要怎安裝
You need to compile PHP with the --with-mhash[=DIR] parameter to enable this extension. DIR is the mhash install directory.
目前還不知道怎麼用~還在研究
« 上次編輯: 2008-08-08 18:45 由 bau720123 »
邁向神乎其技的境界^^

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #70 於: 2008-08-08 19:46 »
php -m
看有沒有那些 module.
如果沒有
php --ini
看看有沒有什麼錯誤.

對了, 官方網站下載的 php.ini 的裡頭 extension_dir 是設成 ./ 也就是目前的目錄, 並不是 ext 那個目錄. 看你是要把 extension_dir 改成 ./ext/ 或是把用到的那幾個 module 的 dll 與 php.exe 放同一目錄吧.

bau720123

  • 可愛的小學生
  • *
  • 文章數: 16
  • 性別: 男
    • 檢視個人資料
    • 9191交易王
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #71 於: 2008-08-11 12:12 »
TRY過了~還是沒有用說~真是奇怪~這一點Appserv真的怪怪的
請問您是否是使用WIN的作業系統呢
您是否可以提供給我一下
php_mcrypt.dll
php_mhash.dll
這兩個檔案呢~以前也有過經驗安裝別的module怎樣都安裝不起來
原來是module檔案的版本不匹配PHP的版本(不同的module版本搭配不同的PHP版本)
找到適合PHP的版本的MODULE之後就OK了
所以我再猜想是否也有可能相同的一個原因
當然都只是在猜測
不過真是謝謝您的回答
邁向神乎其技的境界^^

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #72 於: 2008-08-11 12:30 »
請到 php 官方網站抓 win32 的版本. 那是我在 windows 下頭測試時用的版本.
不需要搭配 apache 使用, 直接用 php.exe 跑就可以看到結果了.

bau720123

  • 可愛的小學生
  • *
  • 文章數: 16
  • 性別: 男
    • 檢視個人資料
    • 9191交易王
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #73 於: 2008-08-11 13:08 »
謝謝您的回覆
我已經成功解決了這個問題
在Appserv上
算是瞎矇的
分享給大家
步驟一(php.ini)(記得存檔)
將;拿掉所以變成以下這樣
extension=php_mcrypt.dll
extension=php_mhash.dll

COPY
C:\AppServ\php5\libmhash.dll
C:\AppServ\php5\libmcrypt.dll
TO
C:\WINDOWS\system32
底下

重開APACHE
看看INFO資訊
好了^^

PS
因為這樣離線訊息我這邊也都可以收到了唷
感謝您的教導~謝謝您
« 上次編輯: 2008-08-11 13:19 由 bau720123 »
邁向神乎其技的境界^^

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
phpmsnclass 1.9
« 回覆 #74 於: 2008-10-23 23:38 »
更新 phpmsnclass 版本為 1.9.

異動記錄:

    * 修正 MSNP9 只有在除錯模式才能登入的問題. (r22, 2007/11/14)
    * 修正 PHP notice 訊息: undefined offset of $aMSNUsers in 'XFR' of doLoop(). (r23, 2007/12/21)
    * 修正 MSNP15 密碼使用特殊字元的編碼問題. (r23, 2007/12/21)
    * 修正密碼長度問題, 密碼只允許最長 16 個字元. (r23, 2007/12/21)
    * 修正 PHP notice 訊息: preg_match(): Unknown modifier ']' in getOIM_maildata(). (r24, 2007/12/26)
    * 修正變數名打錯的問題: $precess_file. (r25, 2008/01/01)
    * 修正 Google Code Issue 11: Undefined property: $oim_send_soap on line 2872. (r26, 2008/01/09)
    * 在 msnbot.php 中新增定時通知的功能. (r27, 2008/03/04)
    * 新增 addContact() 函式, 主動詢問使用者是否允許加入他的聯絡清單中. (r29, 2008/03/11)
    * 修正 sendOIM() 中, 可能同時產生 LockKeyChallenge 與 RequiredAuthPolicy 錯誤的問題. (r30, 2008/10/23)

檔案請到 Google Code 抓取.

bau720123

  • 可愛的小學生
  • *
  • 文章數: 16
  • 性別: 男
    • 檢視個人資料
    • 9191交易王
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #75 於: 2008-11-13 16:59 »
謝謝您新文章的分享
小包跟您說聲謝謝
PS
之前有一次把做好的MSN機器人功能放到公司網站上使用(配合網站發送訊息)
結果突然變成怎樣訊息都發送不出去
後來才知道那時候全球MSN大斷線
所以這功能也暫時失效
真是給它有點無言^^
« 上次編輯: 2008-11-13 17:08 由 bau720123 »
邁向神乎其技的境界^^

Darkhero

  • 酷!學園 學長們
  • 俺是博士!
  • *****
  • 文章數: 3728
  • 性別: 男
    • 檢視個人資料
    • ㄚ凱隨手紀
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #76 於: 2008-11-20 19:06 »

一文多發...視為惡意廣告
希望我們的討論是為了把問題解決,而不是爭論誰對誰錯.
『灌水才是重點,發文只是順便』
『我寧可讓不會釣魚的工程師餓死,也不想讓會餓死的工程師去攪沉公司....』
Blog: http://blog.darkhero.net/
秘密基地: http://www.darkhero.net/comic/
目前服務的網站: http://www.libook.com.tw/

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #77 於: 2009-01-08 21:15 »
最近 MS 的 server 好像加上離線訊息的長度限制, 所以如果你有用的 OIM 的話, 在下一版推出前 (也許要一年半載的吧), 請自行抓請 Google Code 裡頭最新的 SVN 版本出來用吧.

似乎是今年才有的限制, 至少我記得當初測試時, 3000 個字仍然可以傳. 現在大約 315 bytes 左右就不行了.

Steven仔

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #78 於: 2009-03-09 11:38 »
twu2神.. 我想問問如何可以讓人們自己打他的電郵.. 之後自動加入我的msn中?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #79 於: 2009-03-09 11:58 »
請用 MSNP15 的協定, 只要對方加入你, 也就會自動也把對方加入.

Steven仔

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #80 於: 2009-03-09 12:21 »
請用 MSNP15 的協定, 只要對方加入你, 也就會自動也把對方加入.
其實如何用MSNP15 的協定? 我不太會..
我在你的sample.php改了MSNP15之後.. 出了以下的ERROR

#!/usr/bin/php -Cq We need mhash module for MSNP15!

湯姆貓

  • 活潑的大學生
  • ***
  • 文章數: 475
    • 檢視個人資料
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #81 於: 2009-03-09 15:03 »
We need mhash module for MSNP15!
這兒不就寫了~~~
mhash裝了嗎?????

Steven仔

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #82 於: 2009-03-09 15:05 »
We need mhash module for MSNP15!
這兒不就寫了~~~
mhash裝了嗎?????
明白了.. 我試一試

Steven仔

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #83 於: 2009-03-10 11:31 »
我已安裝了 mhash.. 但也不成功  :'(

Steven仔

  • 可愛的小學生
  • *
  • 文章數: 20
    • 檢視個人資料
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #84 於: 2009-03-11 10:53 »
我想啟動時msnbot.sh時.. 出現了以下問題.. 是不是我留了什麼?

代碼: [選擇]
Starting MSN bot: msnbotPHP Warning:  PHP Startup: Unable to load dynamic librar                                                                                                 y '/usr/lib/php/modules/mcrypt.so' - /usr/lib/php/modules/mcrypt.so: cannot open                                                                                                  shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/modules/                                                                                                 mhash.so' - /usr/lib/php/modules/mhash.so: cannot open shared object file: No su                                                                                                 ch file or directory in Unknown on line 0
Usage: php [options] [-f] <file> [--] [args...]
       php [options] -r <code> [--] [args...]
       php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
       php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
       php [options] -- [args...]
       php [options] -a

  -a               Run interactively
  -c <path>|<file> Look for php.ini file in this directory
  -n               No php.ini file will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -s               Display colour syntax highlighted source.
  -v               Version number
  -w               Display source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

  --rf <name>      Show information about function <name>.
  --rc <name>      Show information about class <name>.
  --re <name>      Show information about extension <name>.


bau720123

  • 可愛的小學生
  • *
  • 文章數: 16
  • 性別: 男
    • 檢視個人資料
    • 9191交易王
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #85 於: 2009-04-16 18:15 »
我已安裝了 mhash.. 但也不成功  :'(

請看我在第#73發的訊息
拜託麻煩爬文一下唷
邁向神乎其技的境界^^

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #86 於: 2009-07-17 17:07 »
最近把twu2兄的msnclass做了大改版
加上大頭貼以及表情符號的支援
圖片傳輸必須使用P2P模式
由於MSNP9並不支援P2P
v2版本取消了MSP9的支援 僅支援php5
程式必須以daemon的方式執行,會自動讀取spool目錄底下的*.msn檔案傳送
目前還在bug多多版
等穩定一點後會在補上使用範例以及說明文件
 ;D

有興趣常鮮的人請抓取svn版本
http://code.google.com/p/phpmsnclass/source/browse/#svn/trunk/phpmsnclassv2
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5373
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #87 於: 2009-07-25 13:52 »
似乎由 7/21 開始, MS 的 server 伺服有些更改, 在 MSNP15 的使用上, 並不會在 USR 指令登入之後送出 SBS 的指令, 這會造成 phpmsnclass 在登入後等待 SBS 的指令而無後續的動作.

所以目前把程式修改一下, 直接在 USR 回應後就處理後續的動作, 不再依靠 SBS 指令處理.

改了之後看起來是正常了. 有使用的朋友, 請更新到 r38 或之後的版本.

ricky

  • 實習板主
  • 鑽研的研究生
  • *****
  • 文章數: 669
    • 檢視個人資料
    • Ricky 碎碎唸
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #88 於: 2009-07-27 10:18 »
目前正在改寫Web Service部份
改用原本php5內建的SOAP來處理
完成後再上傳到svn
我的symfony作品:YOMOpets 寵物誌
有興趣可以一起來討論symfony喔
我的部落格:http://ricky.ez2.us/

herb123456

  • 可愛的小學生
  • *
  • 文章數: 8
    • 檢視個人資料
回覆: 使用 PHP 發送 MSN 訊息
« 回覆 #89 於: 2009-09-09 20:34 »
有人有興趣一起弄個web版msn嗎?