• 締切済み

メールの送信について

ASPを使ってwebアプリ見たいなのを作ろうとしています。 データの登録時に予め登録されてているユーザに登録された旨を伝える メールを送信したいです。 いろいろ試した結果、直でbsap21を呼び出すのではなく、bsmtp.dllを 呼び出して送信するほうが動きがいい(というか、basp21のほうはSMTPサーバに接続しない)ので、その方向で行きたいのですが。。。 見つけたコードが以下です。 ------------------------------------------------------------ Private Declare Function SendMail Lib "bsmtp"_ (strServer As String, strTo As String, strFrom As String, _ strSubject As String, strBody As String, strFile As String) As String Public Function SendViaBASP() As String Dim strMailServer As String: strMailServer = "***.***" Dim strFrom As String: strFrom = "hoge@hoge.com" Dim strTo As String: strTo = "hoge@hoge.com" Dim strBcc As String: strBcc = "" Dim strToBcc As String: strToBcc = "" Dim fHTML As Boolean: fHTML = False Dim strSubject As String Dim strBody As String Dim strAttachments As String: strAttachments = "" Dim strRet As String strSubject = "BASP21" strBody = "このメールは、BASP21経由で送信しました." If Len(strTo) Then strToBcc = strTo Else strToBcc = strBcc End If If fHTML Then strToBcc = ">Content-Type: text/html; charset=iso-2022-jp" _ & vbTab & strToBcc End If strRet = SendMail(strMailServer, _ strToBcc, strFrom, strSubject, strBody, _ strAttachments) SendViaBASP = strRet End Function --------------------------------------------------------------- で、これをACCESSのモジュールに登録し、実行したところ問題なく 動くのですが、これをASPに組み込む方法がわかりません。 ACCESSはデータの登録先ではありますが、常に起動しているわけでは ないので、おそらくモジュールとした場合、動かないですよね? ASPから上記のコードを動かすには、どうしたらいいでしょうか。 普通にASPの中(<%~%>)に入れると「ステートメントの末尾が不正」 とのメッセージがでてしまいます。 どうかよろしくお願いします。

みんなの回答

回答No.1

開発しているのはクラシックな ASP だと思うのでサーバーサイドで実行するコードは VBScript で記述するはずです。 で、質問にあるコードは VBScript 向けではなく、おそらくは VB や VBA 向けだと思います。 その理由ですが、 1. VBScript は Declare ステートメントを使えません。 したがって DLL を直接呼ぶことはできません。 Set bobj = Server.CreateObject("basp21") のようにしてください。 2. VBScript は Variant型しかサポートしていません。 そのため "As xxxx" は利用できません。 変数の宣言は Dim a As String ← NG Dim a ← OK 自作関数 NG ケース Private Function MyFunc(aName As String) As String  MyFunc = "あなたの名前は" & aName & "です" End Function OK ケース Private Function MyFunc(aName)  MyFunc = "あなたの名前は" & aName & "です" End Function

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAで複数の添付ファイルを指定してメールを送信する方法を教えてください!

    大変困っています。。。 AccessVBAで"bsmtp"というのを使用して複数の添付ファイルを貼付し送信したいです。 現在、添付ファイルを1つであれば送信することができています。 ただし、複数の添付ファイルを指定する方法がわかりません。 参考になるかわかりませんが、メール送信用定義 Private 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 ---------------------------------------------------------------- Public Function P_F_SendMail(ByVal strBody As String, ByVal strAddress_To As String, ByVal strAddress_From As String, _ ByVal strSMTPSvrName As String, Optional ByVal strSubject As String = "", _ Optional ByVal strAttch As String = "") As String P_F_SendMail = SendMail(strSMTPSvrName, strAddress_To, strAddress_From, strSubject, strBody, strAttch) End Function ~~~中略~~~ Do Until RS_File.EOF If Bol_Flg = False Then Bol_Flg = True Else FMAIL_BODY = FMAIL_BODY & vbNewLine FATTCH = FATTCH & vbTab End If FMAIL_BODY = FMAIL_BODY & "<< FILE NAME = " & RS_File.Fields("ファイル名") & ">>" FATTCH = FATTCH & PC_STR_SAVEPATH & RS_File.Fields("ファイル名") RS_File.MoveNext Loop ~以下省略~~ というようなプログラムなのですが、どうか宜しくお願いいたします!

  • VB6で、Bsmtp.dllを使って、メール送信した際、Time Ou

    VB6で、Bsmtp.dllを使って、メール送信した際、Time Outエラーが発生。 So-netのメールサーバーmail.so-net.ne.jpへメール送信していたのですが、最近Time Outエラーで送れなくなってしまいました。 標準モジュールで 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 と定義し、 strRet = SendMail(szServer, szTo, szFrom, szSubject, szBody, szFile) で送信しています。 So-netのメールサーバーmail.so-net.ne.jpへ送信する場合、ポート番号587を使用するようですが、それが原因なのでしょうか? Bsmtp.dllのバージョンは、2.7.6.29です。 よろしくお願いします。

  • Basp21を使用してメール送信ができない

    Basp21を使用して、メール送信プログラム(Excel VBA)を作成しました。 5台のパソコン(同一仕様)の内1台のパソコンのみエラーが発生してメール送信ができません。 他の4台のPCと環境の相違は無いと思いますが、原因が解りません。 パソコンの初期化をすれば、正常に動作すると思いますが、 エラー発生の都度、初期化もできません。 どなたか、ご教示をよろしくお願いします。 PC環境  OS  :Win7 Pro 64Bit環境  Excel:2013 32Bit  セキュリティソフト:無効 コンポーネントの組み込み  Bsmtp.dll(587 Version) を C:\Windows\SysWOW64 のフォルダーにコピー エラーメッセージ(1秒程度でリターン)  HELO BSMTP.DLL helo BSMTP.DLL 確認項目  1)通常のメール送受信は問題無し(Outlook)  2)Bsmtpのセキュリティは、正常な他のPCと同じ  3)Administratorsで実行してもエラー発生(ユーザー権限の問題)  4)エラー発生時に、Bsmtp.dllの削除操作    Excelによって開かれているため削除不可のメッセージ(dllの読込み確認)  5)架空のサーバーを指定:Cant connect Server 11001のメッセージ  6)LANケーブルを抜く  :Cant connect Server 11004  7)Excelの再インストール(レジストリも削除)しても同じ(Excelのチェック)  8)Bsmtp.dllをコピーしなおしても同じ(Bsmtpのチェック) プログラム  Private Declare Function SendMail Lib "BSMTP.dll" _ (szServer As String, szTo As String, szFrom As String, _ szSubject As String, szBody As String, szFile As String) As String strSMTP="aaa.co.jp" strPort="25" strTimeOut="60" strToAddr="a123@aaa.co.jp" strFromAddr="b123@aaa.co.jp" strSubj="メールテスト"   strBody="本文" strAttach="" strSV_Name = strSMTP & ":" & strPort & ":" & strTimeOut strMailto = strToAddr strMailFrom = strFromAddr strRC = SendMail(strSV_Name, strMailto, strMailFrom, strSubj, _ strBody, strAttach) If strRC <> "" Then MsgBox "エラー発生" & strRC End If 以上 よろしくお願いします

  • BASP21を使ってEXCELからメールの送信

    BASP21を使ってEXCELからメールの送信をしたいのですが、できません。 自分なりに調べた結果、下記のコードになったのですが、どこかおかしいのでしょうか? エラー表示は次になります。 530 5.7.1 client was not authenticated from メールアドレス よろしくお願いいたします。 Sub ボタン2_Click() ''[送信]ボタン Dim bobj, msg As String, i As Long Dim Server As String, Mailto As String, MailFrom As String Dim Subject As String, Attach As String, Body As String On Error Resume Next Set bobj = CreateObject("basp21") ''BASP21オブジェクト ''BASP21がインストールされているかどうかを判定する If Err = 429 Then MsgBox "BASP21がインストールされていません。", vbCritical Exit Sub End If ''必須データのチェック Server = "mail.○○○.com:587:60" ''SMTPサーバー Mailto = "○○○@hotmail.co.jp" ''宛先 MailFrom = "△△△@×××.co.jp" ''差出し人 Subject = "更新連絡" ''タイトル Body = "システムが更新しました" ''本文 msg = bobj.SendMail(Server, Mailto, MailFrom, Subject, Body, Attach) Set bobj = Nothing If msg <> "" Then MsgBox msg, vbExclamation Else MsgBox "メールを送信しました。", vbInformation End If End Sub

  • Access2003からシンプルにファイルを添付してメール送信したいと

    Access2003からシンプルにファイルを添付してメール送信したいと考えています。 こちら(http://www.site-cooler.com/kwl/asp/19.htm)を参考に、BASP21というコンポーネントを利用してACCESS上のフォームにボタンを用意してコードビルダで下記のように記述してみましたが、「コンパイルエラー:構文エラー」と表示されました。 どのように改善すれば良いのでしょうか。 ACCESS初心者の為、すみませんがご教示お願いします。 --------------------------------------------------------------------------- Private Sub コマンド0_Click() Set bobj = Server.CreateObject("basp21") bobj.SendMail() <%@ LANGUAGE = VBSCRIPT %> <% Dim strServer 'SMTPサーバ Dim strTo '宛先 Dim strFrom '送信元 Dim strSub 'メール標題 Dim strBody 'メール本文 Dim strFile '添付ファイル Dim result '戻り値 strServer = "smtp.xxxx.co.jp" strTo = "xxxx@xxxx.co.jp" strFrom = "xxxx@xxxx.co.jp" strSub = "件名" strBody = "本文です。" & vbCrLf & "本文終了" strFile = "c:\text.txt" Set bobj = Server.CreateObject("basp21") result = bobj.SendMail(strServer, strTo, strFrom, strSub, strBody, strFile) If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If Response.Write ("メール送信完了") %> If result <> "" Then Response.Write ("メール送信エラー :" & result) Response.End End If End Sub ---------------------------------------------------------------------------

  • BASP21でメールが送信できない

    ASPでBASP21を使用してメールを送信しようとしたのですが、SMTPサーバーが停止していたため処理結果が取得できませんでした。 このような場合、何か良い対策はありませんでしょうか。 ご教示の程よろしくお願いいたします。 以下にソースの概要を記載いたします。 Dim objBasp21 Dim strMailSendErr Set objBasp21 = CreateObject("Basp21") strMailSendErr = objBasp21.SendMail(パラメータ) '↑↑↑ メールサーバが停止している場合ここで処理が止まってしまう? If strMailSendErr <> "" Then  'エラーの場合の処理 End If

  • ExcelVBA 全角と半角文字

    恐れ入ります。 ExcelVBAの質問ですが、 ********************************************************** Function AscEx2(strOrg As String) As String Dim strRet As String Dim intLoop As Integer Dim strChar As String strRet = "" For intLoop = 1 To Len(strOrg) strChar = Mid(strOrg, intLoop, 1) If (strChar >= "A" And strChar <= "Z") _ Or (strChar >= "a" And strChar <= "z") Then strRet = strRet & StrConv(strChar, vbNarrow) Else strRet = strRet & strChar End If Next intLoop AscEx2 = strRet End Function ********************************************************** 上記のコードで、カタカナを全角、アルファベットを半角にできたのですが、 下記のこの部分の意味がいまひとつ理解できません。 「strRet = "" strRet = strRet & StrConv(strChar, vbNarrow)」 どういった解釈になるのか、お分かりになられる方は、 ご教示を宜しくお願い致します。

  • basp21を利用した送信

    basp21を利用した送信 エクセル2002使用です。 VBAを利用してbasp21.dll(Proではない)を使ってメール送信ををしたいのですが、 フリーソフト版のbasp21.dllで、(POP before SMTP)は利用できるのでしょうか? sub test() dim bobj as Object dim kekka as string, strkk as string, strjikan as string dim mailServer as string, mailFrom as string, mailTo as string, MailSubject as string, mailBody as string, mailFiles as string Set bobj = CreateObject("basp21") mailServer = "mail.***.com"    ’←(POP before SMTP)にしたいのです。 mailFrom = "***@***.com" mailTo = "***@***.com" MailSubject = "タイトル" mailBody = "本文" mailFiles = "d:\autocsv\wddc\" & strkk & strjikan & ".doc" kekka = bobj.SendMail(mailServer, mailTo, mailFrom, MailSubject, mailBody, mailFiles) end sub よろしくお願いします。

  • ASPでメール送信時エラーが出る

    こんにちは ASPでbasp21を使ってメールを送るように作っているのですが <%@ LANGUAGE = VBScript%> <% Dim strServer 'SMTPサーバ Dim strTo '宛先 Dim strFrom '送信元 Dim strSub 'メール標題 Dim strBody 'メール本文 Dim strFile '添付ファイル Dim result '戻り値 strServer = "abc.com" strTo = "efg@abc.com" strFrom = "mail@abc.com" & vbTab & "abc:hogehoge" strSub = "件名" strBody = "本文" strFile = "" set obj=server.createobject("basp21") result = obj.SendMail(strServer,strTo,strFrom, strSub,strBody,strFile) If result <> "" Then Response.Write("メール送信エラー :" & result) Response.End End If と言う感じで 何の変哲もない内容なんですが 実行すると Active Server Pages, ASP 0115 (0x80004005) 外部オブジェクトでトラップできるエラー (C06D007E) が発生しました。スクリプトの実行を続行できません。 とでます 色々調べて 権限がないのかとも思い再セットして DLLの確認もしましたが同じです サーバーアドレスも:25を付けたりしましたが 同じです。 ただ、 strServer = "abc.com" を 空白("")にすると ちゃんとエラーで メール送信エラー :Server name invalid と出るのです と言う事は オブジェクトの作成はできているの? と言う感じで、どうもよく分かりません。 ちなみに 他のページで画像のアップロードに FormSaveAs を使っていますが いたって快適に動きます サーバーはIISで win2000でテストしています wwwサーバーはONにしていますが mailサーバーはOFFにしています これは関係あるのでしょうか? 自分のマシンのmailサーバーは使わないからOFFで良いかなと 思ってそうしています。 どういうポイントが悪いのかよく分からないので どなたか教えて頂けたらと思います よろしくお願いします。

  • マクロで携帯にメール送信

    いつもお世話になっております。 過去に何度か質問をさせていただき、今回のマクロまでたどり着くことが出来ました。 下記の内容にて、作成しました。 ここで、 (1)セルB1にあて先メアドを置いた場合に、メアドを載せる場合 (2)メールを送信する命令で、【myItem.Send】や【SendMail】ではメールが送信されている場合と送信待機の場合がはっせいしております。必ず、送信するまでの命令を、お教えいただきたいです。 PC環境は、XPです。 メールはMicrosoft Office Outlookです。 Sub CreateMail() '参照設定 : Miscosoft Outlook 9.0Object Library Const ShName = "MAIL送信" Const SbjAdd = "b2" Const BodyAdd = "b3:b14" Dim olApp As Outlook.Application Dim objMail As Outlook.MailItem Dim Rng As Range Dim StrBody As String Set olApp = Outlook.Application Set objMail = olApp.CreateItem(olMailItem) For Each Rng In Range(BodyAdd) StrBody = StrBody & Rng.Value & vbLf Next Rng With objMail .Subject = Worksheets(ShName).Range(SbjAdd).Value .Body = StrBody .Display End With End Sub

このQ&Aのポイント
  • 印刷ができずに通信エラーが発生している場合、プリントできない問題が発生している可能性があります。
  • この問題を解決するためには、まず通信エラーの原因を特定する必要があります。
  • キヤノン製品の場合、通信エラーはプリンターとコンピュータの接続に問題がある場合に発生することがあります。
回答を見る

専門家に質問してみよう