[HOME] / [Java] / [Perl5] / [Oracle8] / [Palm(GCC)] / [EJB] / [本の紹介]
1. はじめに |
Windows2000では上手く行かないところがありますので、95/98かNT4.0で実施されることをお勧めします。
以下に、参考になる文献を紹介しておきます
2. 準備(インストール)
3. まずは動くものを
4. 通信の試み(メールの送信)
5. POP3によるメールの受信
2. 準備(インストール) ↑top |
3. まずは動くものを ↑top |
ここでは、まず動くことを確認するために、簡単に使ってみましょう。
C:\test\Src\Starter.c
C:\test\Src\StaterRsc.c
C:\test\Src\StarterRsc.h
C:\test\Rsc\Starter.rsrc
C:\test\Rsc\Resource.frk\Starter.rsrc
C:\test\test_Data\CWSettingsWindows.stg
C:\test\test_Data\Starter\TargetDataWindows.tdt
Link Error : Could not open file: C:\test\RESOURCE.FRK\Starter.tmp
フォルダを見ると、確かに Starter.tmp なんてファイルはありません。Make時の設定を見るために、Edit の Starter Settings... あるいは test.mcp の画面の一番左のアイコンをクリックして、Starter Settings という画面を表示させ、確認していきます。
Target の中の 68K Target のファイル名として、「test」 が設定されており、フォルダにも「test」というファイルは存在します。
一方、Linkerの中のPalmRez Post Linker を見ると、この1行目にあるLinkerの
Input File(Mac Resource Files) が「Start.tmp」と設定されており、連携がとれていません。
この対処としては、2つ考えられます。1つは、68K
Target を「Starter.tmp」に書き換えることで、Palm Magazine Vol.1でも紹介されています。
もう1つは、PalmRez Post Linker の方の Input
File(Mac Resource Files) を「test」にしてしまうことです。どちらにしても、右下の
Save をクリックしたのち、再度Makeしてやると、問題なく実行ファイル(Starter.prc)が作成されます。
何のためにこんな設定がされているか知りませんが、初心者はこういうことであきらめてしまいがちなので、何とかしてもらいものです。
/* 以下の行を追加
*/
EventType newEvent;
switch (eventP->eType)
{
case menuEvent:
return MainFormDoCommand(eventP->data.menu.itemID);
case frmOpenEvent:
frmP = FrmGetActiveForm();
MainFormInit( frmP);
FrmDrawForm ( frmP);
handled = true;
break;
/* ここから追加 */
case ctlSelectEvent:
MemSet(&newEvent,
sizeof(EventType), 0);
newEvent.eType
= appStopEvent;
EvtAddEventToQueue(&newEvent);
handled = true;
break;
/* ここまで */
default:
break;
}
return handled;
}
4. 通信の試み(メールの送信) ↑top |
#include <NetMgr.h>
extern Word AppNetRefnum;
Err errno;
static Boolean MainFormHandleEvent(EventPtr eventP) {
.....
EventType newEvent;
Word interfaceError;
Err error;
Word AppNetRefnum;
.....
/* ここから追加 */
case ctlSelectEvent:
SysLibFind("Net.lib", &AppNetRefnum);
error = NetLibOpen(AppNetRefnum, &interfaceError); /*
接続して */
NetLibClose(AppNetRefnum, true);
/* 切断する */
MemSet(&newEvent, sizeof(EventType),
0);
newEvent.eType = appStopEvent;
EvtAddEventToQueue(&newEvent);
handled = true;
break;
/* ここまで */
まず、ダウンロードしましょう。ここをクリックしてください。オライリ社のサイトで、下の方のNov. 1, 2000のところのDownload CW R6 projects (Mac/Windows)です。
ここで注意が必要なのは、インクルードファイルの一部を修正しないとコンパイルできないことです。以下を直してください。
Program Files\Netrowerks\Incs\System\Unix\unix_stdio.h
#include <stdarg.h> -> #include
<unix_stdarg.h>
Program Files\Netrowerks\Incs\System\Unix\unix_string.h
#include <StdArg.h> -> #include <unix_stdarg.h>
さきほどダウンロードしたファイルを解凍し、cwr6projs\PalmProg\Sendmail
(chapter 9)\Sendmail (R6)をダブルクリックします。このとき3つほどメッセージが出ますが、無視します。
このまま、Makeをクリックすると、実行型が出来上がります。Palmデバイスに入れて動かしてみるとちゃんとメール送信できました。
MyErrorFunc() - FrmCustomAlert()
MyStatusFunc() - FrmCustomAlert()
sendmail.c
sendmail()
-|- make_connection()
-|- atoport() - getservbyname()
|
|- atoaddr() -|- inet_addr()
|
|
|- gethostbyname()
|
|- socket()
|
|- connect()
|
|- bind()
|- GotReply() - ReadReply()
- sock_gets() - read()
|- Send() - nwrite()
- write()
|- SendBody() - SendSingleBodyLine()
- nwrite() - write()
5. POP3によるメールの受信 ↑top |
私が入っているリムネットのメールサーバに対してアクセスしてみます。ダイアルアップの接続を済ませたあとで、コマンドプロンプトから telnet を使って入り込みます。青色のところを入力しますが、エコーバックされないため、ちゃんと入っているか?てな感じです。このやり取りをプログラムで実現すればいいわけです。なんかできそうな気になってきましたね。C:\>telnet mail.cc.rim.or.jp 110 (110 は pop3 のポート番号です)
Server: +OK QPOP (version 2.53) at mail3.cc starting.
Client : USER egami3
Server: +OK Password required for egami3.
Client : PASS ******* (******* はパスワードです)
Server: +OK egami3 has 1 message (915 octets).
Client : STAT
Server: +OK 2 1540
Client : LIST
Server: +OK 2 messages (1540 octets)
Server: 1 915
Server: 2 625
Server: . (ピリオドです)
Client : RETR 1
Server: +OK 915 octets
Server: Received: from serio.al.rim.or.jp (serio [202.247.191.123])
by mx1.rim.or.jp (8.9.3+Sun/3.7W) with ESMTP id AAA15944
for <egami3@cc.rim.or.jp>; Thu, 26 Apr 2001 00:00:25 +0900 (JST)
・・・・・・・・・・・・・・・
Content-Type: text/plain; charset="ISO-2022-JP"
Content-Transfer-Encoding: 7bit
X-UIDL: 5a73b5519fa77475d7dff22f563c27c8@%F%9%H$G$9B (本文ですが、日本語が化けちゃいました)
Server: . (ピリオドです)
Client : DELE 1
Server: +OK Message 1 has been deleted.
Server: +OK Pop server at mail3.cc signing off.
Client : QUITホストとの接続が切断されました。
C:\>
このページにご意見のある方は、egami3@cc.rim.or.jp までお願い致します。