はじめまして。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は使用できないのでしょうか???
.NETなら、メール送受信するクラスがあるので、そちらを
使ったら如何でしょう〜
http://dobon.net/vb/dotnet/internet/index.html
以上。参考まで
宣言が間違っています。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
ツイート | ![]() |