掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
メインのメーラーの受信の邪魔をせずに、送られてくるメールのタイトル、アドレス、受信日時のみを取得するには (ID:35914)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
皆さんありがとうございます、 先程完成しました。 今の所正常動作しています。 殆どが教えて貰った事で、 自分の実力以上のものが作れました^^。 大変助かりました。 今回もありがとうございましたm(__)m。 以下が完成したコードです。 procedure TForm1.FormShow(Sender: TObject); var s:string; begin //変数初期化 s1 := ''; s2 := ''; s3 := ''; s4 := ''; s5 := ''; s6 := ''; //データベースアドレス設定 table1.DatabaseName := ExtractFileDir( Paramstr(0) ); Query1.DatabaseName := ExtractFileDir( Paramstr(0) ); try table1.Open; except table1.CreateTable; table1.Open; end; Button1Click(Sender); caption := 'メール受信を監視しています'; s := ''; while 1 > 0 do begin if s = table1.fieldbyname('送信日時詳細').AsString then exit; ListBox1.Items.Add(table1.fieldbyname('タイトル').asstring+ ' ' + table1.fieldbyname('送信者').asstring + ' ' + table1.fieldbyname('送信日時詳細').AsString); s := table1.fieldbyname('送信日時詳細').AsString; table1.Next; end; table1.Close; table1.open; end; procedure TForm1.Button1Click(Sender: TObject); var Msg : TIdMessage; i : integer; begin application.Title := 'メールチェッカー'; listbox1.Clear; IdPOP31.Host := 'POP3アドレス'; IdPOP31.Port := 110; IdPOP31.Username := 'ユーザー名'; IdPOP31.Password := 'パスワード'; IdPOP31.Connect; //if 0 = idpop31.CheckMessages then //exit; for i := 1 to IdPOP31.CheckMessages do begin Msg := TIdMessage.Create(Self); IdPOP31.RetrieveHeader(i, Msg); //受信データ取得 s1 := Msg.Subject{タイトル}; s2 := Msg.From.Text{送信者}; s3 := inttostr(IdPOP31.CheckMessages{未開封メール数}); s4 := Msg.Headers.Strings[6]{送信日時}; s5 := datetostr(msg.Date{送信日}); if s2 = 'メールアドレス1' then sw1 := true; if s2 = 'メールアドレス2' then sw1 := true; if SW1 then begin //データ検索 Query1.SQL.Text := 'SELECT COUNT(*) FROM メールお知らせ WHERE 送信日時詳細 = "' + S4 + '";'; Query1.Open; if 0 = Query1.fieldbyname('COUNT(*)').AsInteger then begin //データベース登録} application.Title := '受信しました'; with table1 do begin Insert; Edit; FieldByName('タイトル').AsString := s1; FieldByName('From').AsString := s2; FieldByName('送信日時詳細').AsString := s4; FieldByName('送信日').AsString := s5; if s2 = 'メールアドレス1' then FieldByName('送信者').AsString := '1さん'; if s2 = 'メールアドレス2' then FieldByName('送信者').AsString := '2さん'; post; sw1 := false; timer2.Enabled := true;//チャイムを鳴らす end; end; end; end; IdPOP31.Disconnect; ListBox1.Items.Add(table1.fieldbyname('タイトル').asstring+ ' ' + table1.fieldbyname('送信者').asstring + ' ' + table1.fieldbyname('送信日時詳細').AsString); timer1.Enabled := true; form1.WindowState := wsMinimized; end; procedure TForm1.Button2Click(Sender: TObject); var Msg : TIdMessage; i : integer; begin IdPOP31.Connect; for i := 1 to IdPOP31.CheckMessages do begin Msg := TIdMessage.Create(Self); IdPOP31.RetrieveHeader(i, Msg); //受信データ取得 s1 := Msg.Subject{タイトル}; s2 := Msg.From.Text{送信者}; s3 := inttostr(IdPOP31.CheckMessages{未開封メール数}); s4 := Msg.Headers.Strings[6]{送信日時}; s5 := datetostr(msg.Date{送信日}); if s2 = 'メールアドレス1' then sw1 := true; if s2 = 'メールアドレス2' then sw1 := true; if sw1 then begin edit1.Text := s1; //データ検索 Query1.SQL.Text := 'SELECT COUNT(*) FROM メールお知らせ WHERE 送信日時詳細 = "' + S4 + '";'; Query1.Open; if 0 = Query1.fieldbyname('COUNT(*)').AsInteger then begin //データベース登録} application.Title := '受信しました'; with table1 do begin ListBox1.Items.Add(table1.fieldbyname('タイトル').asstring+ ' ' + table1.fieldbyname('送信者').asstring + ' ' + table1.fieldbyname('送信日時詳細').AsString); Insert; Edit; FieldByName('タイトル').AsString := s1; FieldByName('From').AsString := s2; FieldByName('送信日時詳細').AsString := s4; FieldByName('送信日').AsString := s5; if s2 = 'メールアドレス1' then FieldByName('送信者').AsString := '1さん'; if s2 = 'メールアドレス2' then FieldByName('送信者').AsString := '2さん'; post; sw1 := false; timer2.Enabled := true;//チャイムを鳴らす end; end; end; end; IdPOP31.Disconnect; end; procedure TForm1.Timer1Timer(Sender: TObject); begin timer1.Enabled := false; try Button2Click(Sender); finally timer1.Enabled := true; end; i := i +1; caption := inttostr(i); end; procedure TForm1.Timer2Timer(Sender: TObject); begin messagebeep(mb_ok); if count1 = 5 then begin timer2.Enabled := false; count1 := 0; end; count1 := count1 + 1; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.