VB2008でBSMTPを使用する


TOMI  2009-12-09 22:54:33  No: 142959  IP: [192.*.*.*]

はじめまして。VB初心者のTOMIといいます。
VB2008でメール処理を考えています。
BSMTP.DLLを使用して、メールデータを作成しようとしていますが



Option Explicit On
Public Class Form1

    Private Declare Function SendMail Lib "bsmtp" _
          (ByVal szServer As String, ByVal szTo As String, ByVal szFrom As String, _
          ByVal szSubject As String, ByVal szBody As String, ByVal szFile As String) As String
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


        Dim mdir As String
        Dim rcnt As Long
        Dim szTo As String, szFrom As String
        Dim szSubject As String, szBody As String, szFile As String

        mdir = "C:\temp\"  ' メールファイルを作成するフォルダ(メールキュー)
        szTo = "toriyosi@kcv.ne.jp"     ' 宛先
        szFrom = "toriyosi@ms13.megaegg.ne.jp"
        szSubject = "はじめまして"     ' 件名
        szBody = "こんにちは。" & vbCrLf & "さようなら"   ' 本文
        szFile = ""   ' ファイル添付なし


        rcnt = SendMail(mdir, szTo, szFrom, szSubject, szBody, szFile)

    End Sub
End Class


SendMailの箇所で「保護されているメモリに読み取りまたは書き込み操作を行おうとしました。他のメモリが壊れていることが考えられます。」
といったエラーがでます。BSMTP.DLLは、配置済みです。

VB2008では、BSMTP.DLLは使用できないのでしょうか???

編集 削除
オショウ  2009-12-09 23:50:19  No: 142960  IP: [192.*.*.*]

.NETなら、メール送受信するクラスがあるので、そちらを
使ったら如何でしょう〜

http://dobon.net/vb/dotnet/internet/index.html

以上。参考まで

編集 削除
魔界の仮面弁士  2009-12-10 11:51:48  No: 142961  IP: [192.*.*.*]

宣言が間違っています。ByVal ではなく ByRef にしてください。

本家 http://www.hi-ho.ne.jp/babaq/ に記載されているのは、
「VB6 の場合」の宣言です。VB.NET では下記のようにしてください。

Private Declare Function SendMail Lib "bsmtp" _
   (ByRef szServer As String, _
    ByRef szTo As String, _
    ByRef szFrom As String, _
    ByRef szSubject As String, _
    ByRef szBody As String, _
    ByRef szFile As String) As String

以下、参考までに。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200412/04120032.txt

編集 削除