Next Page

Access2000で家族メール?  その1
 
 2001.06.15 tsuchiya

Accessでメールソフトを作って見ましょう。
メールソフトといってもOutLookの類ではありません。
スタンドアロンのPC上にメールサーバーも家族人数分のアカウントも一つAccessのmdbファイルとして一緒にいれます。
Access内のテーブルがサーバーになります。複数のメールアカウントは1枚のフォームです。

今現在は、構想だけでAccessファイルの実体は、まったくありません。
少しずつ作っては公開することにします。
ソフト名はAccess家族メールとします。
私にとってAccessのプログラミングは日曜大工のようなものですから更新は週一で上出来でしょう。
たまに見にきてください。

さて今日はテーブルの設計から始めましょう。
通常のインターネットメールはプロバイダーのメールサーバー間でやりとりします。
Access家族メールは1つのテーブルで、すべてまかないましょう。
テーブル名はメールサーバーに決定
次にテーブルの構成フィールドを決めます。
送信時に必要なフィールドは
送信者、宛先、送信日時、件名、送信内容
これでメールをサーバーに置くことが出来ました。
家族は5人とします。
A(旦那さん・・・便宜上管理者です。),B(奥さん・・・美しい!),C(長男・・・中一),D(長女・・・小5),E(次女・・・小2)
さっそくメールを送って見ましょう。
旦那さんから奥さんに朝出かける前に、今日は夜の会議があるから遅くなります。

新規mdbファイルを作成します。メールサーバーテーブルを作成します。
とりあえず、送信日時(日付/時刻型)以外はデフォルトのテキスト型でOkでしょう。
主キーは設定しません。

これでメールサーバーにメールが置かれました。
奥さんは、このメールをその日のお昼頃読みました。
当然、返事を書きます。それが親しき仲にも礼儀ありです。
決して、旦那さんが帰ってきた時、文句を言うだけでメールの返事を省略してはなりません。
メールは送信→受信→返信→受信でワンセットであるべきです。

奥さんはさっそくメールの返事を書きました。
会議は楽しかった?後で聞かせて。
旦那は夜25時ごろ帰宅してメールを読みます。
奥様は夢の世界を彷徨っているようです。

メールサーバーテーブルにフィールドを追加します。と同時にメールの状態(未読、返信済みなど)を識別するフラグを設定します。
メールは送信(1)→受信(2)→返信(3)→受信(4)でワンセットであるべきです。
最後のフィールドのフラグは受信(4)を意味します。

メインとなるテーブルが完成しました。
このテーブルがその名の通りメールサーバーになりますことか・・・
次に、このテーブルに、いかにアクセスするかが問題です。
が、そろそろお時間がきました。
またお会いしましょう。
2001.06.18 tsuchiya
前回は、テーブルにデータを直接書き込みました。
結果、メールサーバーに必要なフィールドもだいたい解りました。

ここでメールソフトの機能を確認しておきます。
  1.新規メールを書いて送信する。
  2.メールを受信して読む。
  3.返信メールを書いて送信する。

今日は、1.新規メールを書いて送信する。をフォームから実現しましょう。
旦那さんのためにOutLook Expressの新しいメールに相当するフォームを1枚作ります。
(後に、このフォームに受信トレイ、送信済みアイテム、その他を追加する予定です。)
送信時に必要なフィールドは
送信者、宛先、送信日時、件名、送信内容でした。
旦那さんのためのフォームですから、送信者は旦那さん(A)、宛先はリスト(ABCDE)から選びます。
送信日時はNow関数で取得します。

フォーム名は家族メールです。

家族メールフォームを作成します。




2001.06.18 tsuchiya

前回は、テーブルにデータを直接書き込みました。
結果、メールサーバーに必要なフィールドもだいたい解りました。

ここでメールソフトの機能を確認しておきます。
  1.新規メールを書いて送信する。
  2.メールを受信して読む。
  3.返信メールを書いて送信する。

今日は、1.新規メールを書いて送信する。をフォームから実現しましょう。
旦那さんのためにOutLook Expressの新しいメールに相当するフォームを1枚作ります。
(後に、このフォームに受信トレイ、送信済みアイテム、その他を追加する予定です。)
送信時に必要なフィールドは
送信者、宛先、送信日時、件名、送信内容でした。
旦那さんのためのフォームですから、送信者は旦那さん(A)、宛先はリスト(ABCDE)から選びます。
送信日時はNow関数で取得します。

フォーム名は家族メールです。

家族メールフォームを作成します。

こんな感じでどうでしょうか。
宛先はコンボボックス、件名、送信内容はテキストボックスです。
すべて非連結のオブジェクトで、オブジェクト名はラベル名と同じにします。
宛先の値集合ソースにA,B,C,D,Eと入れておきます。
送信のコマンドボタンを追加します。
それでは旦那である私が息子にメールを書きます。
宛先はC(長男)を選んで・・件名・・・・・送信内容・・・・・
そして送信ボタンをクリック
これでメールサーバーにデータが書き込まれれば成功です。
でも何か忘れています。
送信ボタンに、魂(たましい)を吹き込みましょう。

  Private Sub 送信_Click()
    メールサーバーにデータを書き込みます。
  End Sub


Access2000既定のデータ アクセス ライブラリはADOですが
すみませんが使い慣れたDAOでいきましょう。
参照設定のMicrosoft ActiveX Data Objects2.1 Libraryのチェックをはずし
Microsoft DAO 3.6 Object Libraryにチェックを入れます。

それではコードを書いて見ましょう。(2001.07.06一部訂正しました。)

Private Sub 送信_Click()  

     If Me!宛先 = "" Or IsNull(Me!宛先) Then ’入力チェックします。もう少し気の利いた方法がありそう?
        MsgBox "宛先は?"
        Exit Sub
     End If
     If Me!件名 = "" Or IsNull(Me!件名) Then
        MsgBox "件名は?"
        Exit Sub
     End If
     If Me!送信内容 = "" Or IsNull(Me!送信内容) Then
        MsgBox "送信内容は?"
        Exit Sub
     End If

   Dim db As Database ’始めの4行はDAOの決り文句です。メールサーバーテーブルを開きます。
   Dim rs As Recordset
   Set db = CurrentDb
   Set rs = db.OpenRecordset("メールサーバー", dbOpenDynaset)

     rs.AddNew ’メールサーバーに新規のレコードを追加します。
     rs!送信者 = "A" ’とりあえず旦那さん専用 ・・・・汎用フォームにしたときは手直しすることにします。
     rs!宛先 = Me!宛先
     rs!送信日時 = Now() '現在時刻はNOW関数からもらいます。
     rs!件名 = Me!件名
     rs!送信内容 = Me!送信内容
     rs!フラグ = "1" '新規のメールであることを記します。
     rs.Update ’データを更新しました。

     rs.Close ’開いたRECORDSETは閉じましょう。
     db.Close

     Me!宛先 = "" ’コンボ、テキストの内容をカラにします。
     Me!件名 = ""
     Me!送信内容 = ""
     MsgBox "メール送信しました。"
 End Sub

それではメールを書いて送信してみましょう。



送信ボタンをクリックした後、メールサーバーテーブルを開いてみます。
成功!!
今日はここまで。

    Next Page