PHS経由でネットに接続できるEthernetアダプタのファームウェアをハック・中編 ―― LANにつないでメールの送受信と自動実行を実現

中本伸一

tag: 組み込み

技術解説 2007年11月 1日

// 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の終端

リスト3 メール自動返信のMainファイル

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日