Microsoft Access Club >SampleFile >インデックス >このページ >次頁 < 前項  サイト内検索


SendObject メソッドを用いてEmail送信を行う方法:SampleFile148



今回は、AccessからEmail送信を行う方法をご紹介します。Accessには便利な SendObject メソッドという機能がありますから、これを精一杯利用して簡易に送信が可能になります。

今回のサンプルは、テーブルフィールドに登録されているEmailアドレス全てに送信する機能です。送信が不要であれば、そのレコードのCKフィールドをNoにして下さい。

サンプルテーブルデータ

テーブルデータは下記のようなものを想定します。CKフィールドは、メール送信不要の場合に利用します。

ID 氏名 Emailアド CK
1 佐藤 真知子 webmaster@accessclub.jp Yes
2 鈴木 春奈 bbs@accessclub.jp No
3 中村 庄治 info@accessclub.jp No

 

BCC方式

このテーブルに登録されているEmailアドレスに対してBCC方式でメール送信を行います。BCCで送信すると、Emailアドレスを隠すことができます。多数の方にメール送信を同時に行う場合は、必ずこのBCC欄にメールアドレスを記入するようにしましょう。

 

サンプルフォームの作成

メールの件名、内容は、所定のフォームから入力します。但し、サンプルではテーブルに件名、送信内容を保存する設定にしていません。この辺りは各自皆さん方でアレンジして下さい。

 

 

コマンドボタンのクリック時イベントプロシージャの作成

実行コマンドボタンのクリック時イベントには、下記のようなプロシージャを記述します。

Private Sub cmd_実行コマンド_Click()

    On Error GoTo エラー

    Dim db As DAO.Database 'DAOを用います。参照設定を確認して下さい。
    Dim rs As DAO.Recordset
    Dim strEmail As String '送信先のEmailアドレスです。
    Dim strOwnEmail As String '送信元のEmailアドレスです。
    Dim strSubject As String
    Dim strText As String

    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbl_sample")
    
    strEmail = ""
    strOwnEmail = "webmaster@accessclub.jp"
    strSubject = Me.txt_件名
    strText = Me.txt_送信内容
        
    Do Until rs.EOF '対象とするテーブルの最後まで進みます。
        If rs!CK = True Then 'IF構文で分岐させます。
            strEmail = strEmail & rs!Emailアドレス & ";"
        End If
        rs.MoveNext
    Loop
        
    DoCmd.SendObject acSendNoObject, , , , , strEmail & strOwnEmail, _
          strSubject, strText, True

    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing

Exit Sub

エラー:

    If Err.Number = 94 Then
        MsgBox "件名又は送信内容が空白では、実行できません", 16
    Else
        MsgBox "何か予期せぬエラーが発生しました。エラーコード:" & _
        Err.Number & Chr(13) & Err.Description
    End If
    End


End Sub
 
考え方と利用方法
  • DAOを用いて、テーブルからLoopを絡ませEmailアドレスを抽出していきます。Emailアドレスは、変数 strEmail にどんどん格納されていくことになります。
  • Access2000、2002のバージョンをお使いの場合は、参照設定でDAOを有効にする必要があります。
  • Emailアドレスは、セミコロン(;)で繋げています。

  • テキストボックスに入力された文字列(件名、送信内容)を変数を用いて取り込んでいますので、空白(NULL)の場合はエラー になるようにしています。よって、エラー処理を記述しユーザーにメッセージを表示させます。

 

  • SendObjectメソッドについては、HELP を参照して下さい。このサンプルでは、BCCですが変更も簡単です。
  • 初期設定では、直ちに送信を行うのではなく一度メールソフトが立ち上がり確認ができる設定です。

 

  • Emailアドレスはセミコロンで繋げていますが、この方法ですと最後のEmailアドレスにもセミコロンが付加されてしまいます。除去する方法もありますが、 今回は最後のセミコロンの後に送信者のEmailアドレスを繋げて、自分にもメール送信が行われるようにしています。一石二鳥です 。

 

留意点

Access2000において、このSendObjectを利用したプロシージャで不具合が発見されました。 よく出会うAccessページ違反です。サービスパック3で修正されましたので、Access2000をご利用の方はアップデータが必要です。

 

関連ページ

 

 

ページの先頭へ 前ページへ戻る

 


SendObject メソッドを用いてEmail送信を行う方法:SampleFile148


 

-Microsoft Access Club-