■メールを受信
フォームにidPOP3を貼り付けます。名前はidPOP31(初期値)です。jconvert.pasを追加してください。
サーバなどの設定
オブジェクトインスペクタを見ればわかると思いますが、idPOP3には
- Hostプロパティ
- Passwordプロパティ
- Usernameプロパティ
がありますので設定します。プロバイダにもらったマニュアルに書いてあるやつです。
サーバに接続
接続します。idPOP3のConnectメソッドを使用します。引数にはタイムアウトを指定します。
サーバ上にあるメールの数を取得
サーバ上にあるメールの数を取得します。idPOP3のCheckMessages関数を使用します。 戻り値はInteger型です。
メールが来てれば受信
もし先ほど取得したメールの数が1以上であれば、メールを受信します。 idPOP3のRetrieveメソッドを使います。引数は(メール番号:integer,メッセージ:TidMessage)です。 一通目のメール番号は1です。
ソース(一部省略)
もともとVBをやっていたこともあって、動的配列を使う方法にしてしまいました・・
type TMsgArray:array of TidMessage; var mailCount:integer; msgReceived:TMsgArray; begin //設定 idPOP31.Host := 'mail.aaaaaaa.ne.jp'; idPOP31.Password := 'asfaffadf'; idPOP31.Username := 'username'; //接続 idPOP31.Connect(-1); //サーバ上にあるメールの数を取得 mailCount := idPOP31.CheckMessages; if mailcount > 0 then begin //msgReceivedの要素数を再定義 SetLength(msgReceived,mailCount); for i := 0 to mailCount do begin msgReceived[i] := TidMessage.Create(idPOP31); //受信 idPOP31.Retrieve(i+1,msgReceived[i]); end; //1通目のメールを表示 lblSubject.Caption := msgReceived[0].Subject; lblFrom.Caption := msgReceived[0].From.Name + ' <' + msgReceived[0].From.Address + '>' ; memBody.Text := jConvert.ConvertJCode(msgReceived[0].Body.Text,SJIS_OUT); end; //切断 idPOP31.Disconnect; end;