NonSoft

メール受信時にプログラムを起動するサンプル(VB6)


 サンプル(ソース/コード)
<このサンプルの概要>
メール受信時にメーラー等のプログラムを起動するサンプルです。Basp21(Bsmtp.dll)を使用し、
とてもシンプルで簡単でした。

このサンプルの仕様は、メールサーバーのメールボックスにメールが存在する時にメーラー
プログラムを起動するというものです。メールボックスのメールはそのまま残しますので、
メーラーで受信する事が出来ます。このサンプルは定期的にメールを受信しますので、
メールボックスからメールが削除されるまで何度もプログラム起動してしまう事が無いように、
メールボックスが一度空になってから、新たにメールを受信した時のみプログラムを起動する
ようにしています。

このサンプルではOutLook Express(msimn.exe)を起動していますが、
シャットダウン(shutdown.exe)を起動する事でパソコンのシャットダウン/再起動が出来ます。
しかし、メールを削除しないと何度も再起動してしまう恐れがあるので、何らかの細工が必要
になると思います。

このサンプルに関連したツールとして指令メール実行というものがあります。
指令メール実行は、受信メールを監視しメールタイトルのキーワードに対応したプログラムを
実行するというツールです。実行するプログラムを予め複数登録して置いて、メールの
タイトルで実行するプログラムを切り替える事が出来ます。メールのタイトルに実行するPATH
をそのまま指定する方法も考えましたが、どんなプログラムでも実行出来てしまうので、
セキュリティ的に問題有りということでキーワードという手法を採用しています。

メール関係のその他のサンプルはこちらです。
メール送信(SMTP認証/POP認証)のサンプル(VB.NET)
メール送信(SMTP認証/POP認証)のサンプル(C#.NET)
SMTPでメール送信(ソケット通信)サンプル(VB.NET)
SMTPでメール送信(ソケット通信)サンプル(C#.NET)
POP3でメール受信(ソケット通信)サンプル(VB.NET)
POP3でメール受信(ソケット通信)サンプル(C#.NET)
メール送信/メール受信サンプル(VBS/VBA)

メール関係のその他のツールはこちらです。
PC状況メール通知(PcEvMail)
PC起動/PC終了/ログイン/ログアウト/ファイル更新時にメール通知/ログ出力するツールです。
ファイル監視人
ファイルやフォルダの更新時にメッセージ表示またはメール送信するツールです。
フォルダ監視人
フォルダ内のファイル更新時に更新通知(差分メール等)、指定プログラム実行するツールです。

★フォームモジュール(Form1.frm)
' メール受信API
Private Declare Function RcvMail Lib "bsmtp" _ 
(szServer As String, szUser As String, szPass As String, szCommand As String, szDir As String) As Variant

' カレントディレクトリを変更するAPI
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" _
(ByVal CurrentDir As String) As Long

' プログラム起動済みフラグ
Private AlreadyExecFlag As Boolean

Private Sub Timer1_Timer()
    
   'カレントディレクトリの変更
    SetCurrentDirectory App.Path
    
    ' メール受信
    Dim outary As Variant
    outary = RcvMail("pop.xxx.com", "userid", "passwd", "LIST 1-1", App.Path)
    If IsArray(outary) Then
        ' 受信メール有り
        If AlreadyExecFlag = False Then
            ' プログラムを起動していない時は起動する
            If MsgBox("メールを受信したのでプログラムを起動します。" & vbCrLf & _
                      "宜しいですか?", vbQuestion Or vbYesNo, "メール受信") = vbYes Then
                ' メーラー起動
                Shell "C:\Program Files\Outlook Express\msimn.exe", vbNormalFocus
            End If
            ' プログラム起動済みフラグを設定
            AlreadyExecFlag = True
        End If
    Else
        ' 受信メール無し
        ' プログラム起動済みフラグをクリア
        AlreadyExecFlag = False
    End If
    
End Sub