// Mail send sample (with SMTP auth) |
|
char *Pop="popserver"; |
// POPサーバ名 |
char *Smtp="smtpserver"; |
// SMTPサーバ名 |
char PopState,SmtpState,*recbuf,*MailTo; |
// POP&SMTPステート変数と各種バッファ |
main(){char soc,stat; |
// main開始,ソケットとステータス用変数を確保 |
for(;;){ |
// POPを監視し続けるためのループ開始 |
Sleep(6000);MemoryFree(MailTo);MailTo=0; |
// 1分待って送信メール・アドレスをクリア |
soc=CreateSocket(1);GetDefMtu(soc, 512); |
// ソケット生成,データ長を512バイトにセット |
if(soc<0){PrStr("Soc?");return;} |
// ソケット生成エラー・チェック |
if(Connect(soc,GetHostByName(Pop),110)<0){PrStr("Pop?");return;} |
// POPサーバに接続 |
PrStr("Connect POP server¥r¥n"); |
// デバッグ用画面表示 |
PopState=1;GetNetLine(0,0,0,0); |
// POPステート初期化およびTCP/IP入力ライブラリ初期化 |
recbuf=MemoryAlloc(64); |
// 読み込みバッファ確保 |
for(;;){ |
// POPステート・マシン・ループ |
stat=POP::PopHandler(soc); |
// POPステート・マシン呼び出し |
if(stat<0||stat==1)break;SystemSleep(); |
// POP終了チェック |
} |
// POPステート・マシン・ループの終端 |
GetNetLine(0,0,0,1);MemoryFree(recbuf);CloseSocket(soc); |
// 各種バッファの開放 |
if(!MailTo)continue; |
// もしメールが来ていなければ,1分待って再度POPアクセスへ |
PrStr(MailTo);PrStr(" SMTP start¥r¥n"); |
// デバッグ用に返信アドレスを表示 |
soc=CreateSocket(1);GetDefMtu(soc, 512); |
// ソケット生成とTCP/IPデータ長をセット |
if(Connect(soc,GetHostByName(Smtp),25)<0){PrStr("Svr?");return;} |
// SMTPサーバに接続 |
PrStr("Connect SMTP server¥r¥n"); |
// デバッグ用画面表示 |
SmtpState=1; |
// SMTPステート初期化 |
for(;;){ |
// SMTPステート・マシン・ループ |
stat=SMTPAUTH::SmtpHandler(soc); |
// SMTPライブラリ呼び出し |
if(stat<0||stat==1)break;SystemSleep(); |
// SMTPステート終了チェック |
} |
// SMTPステート・マシン・ループの終端 |
CloseSocket(soc): |
// SMTP用のソケット開放 |
} |
// POPを監視し続けるループの終端 |
} |
// mainの終端 |