BASP21を利用したメール送信
BASP21とはメールの送受信などの機能を持っている大変便利なコンポーネント(フリーソフト)です。今回は、このBASP21のBSMTP.DLLを利用します。BASP21は以下からダウンロードできます。今回のプログラムを実行する際にはこのDLLが必要となります。実際のプログラムはVB6で作りました。
BASP21
POP Before SMTPとはSPAMの中継を防ぐためのしくみです。具体的には、該当メールサーバ対して、POP3で認証を行なうと、一定時間内、同一IPアドレスからのメール送信が許可されます。
プログラミングとしては、BSMTP.DLLの関数RcvMailとSendMailを利用します。POP Before SMTPでは、通常、実際にメールを受信するのではなく、ユーザ名、パスワードを指定して、STATコマンドを実行します。そのSTATコマンドが正常終了した場合にSendMail関数を利用して、実際のメール送信を行います。
実行画面

BSMTP.DLLの関数を利用するための定義
メール受信
Public Declare Function RcvMail Lib "bsmtp" _
(szServer As String, szUser As String, szPass As String, _
szCommand As String, szDir As String) As Variant
メール送信
Public Declare Function SendMail Lib "bsmtp" _
(szServer As String, szTo As String, szFrom As String, _
szSubject As String, szBody As String, szFile As String) As String
メール送信処理のプログラム
Private Sub cmdSend_Click()
'変数定義
Dim szServer As String, szUser As String, szPass As String, szCommand As String, szDir As String
Dim ar As Variant
Screen.MousePointer = vbHourglass
'POP Before SMTPの実行
szServer = txtPOP
szUser = txtUser
szPass = txtPassword
szCommand = "STAT" 'STATコマンドを実行する
szDir = vbNullString '受信したメールを保存するディレクトリ、ここではNULL
ar = RcvMail(szServer, szUser, szPass, szCommand, szDir)
'結果チェック、正常の場合は、配列の結果が返る
If Not IsArray(ar) Then
Screen.MousePointer = vbNormal
Call MsgBox("POP Before SMTPエラー" & vbCrLf & ar, vbExclamation + vbOKOnly)
Exit Sub
End If
'認証できた場合、メール送信
Dim szTo As String, szFrom As String, szSubject As String, szBody As String, szFile As String
Dim ret As String
szServer = txtSMTP
szTo = txtTo
szFrom = txtFrom
szSubject = txtTitle
szBody = txtBody
szFile = vbNullString
ret = SendMail(szServer, szTo, szFrom, szSubject, szBody, szFile)
' 送信エラーのときは、戻り値にエラーメッセージが返る
If Len(ret) <> 0 Then
Screen.MousePointer = vbNormal
Call MsgBox("メール送信エラー:" & ret, vbOKOnly + vbExclamation)
Exit Sub
End If
Screen.MousePointer = vbNormal
Call MsgBox("メール送信が完了しました", vbOKOnly + vbInformation)
End Sub
VB6のプロジェクトファイルを以下に置きました。
プロジェクトファイル一式
動作確認しましたが、エラー処理等、不十分ですので、動作は保証できません。このプログラムを利用しての不具合、不利益には一切の責任を負いかねます。ご了承ください。
BASP21リンク
BASP21
BSMTP.DLL
アプリケーションガイド
Posted by nishida at 21:05:37


