Web上のメール送信フォームにPOSTしてみます。

クライアントから直接、メールを送信しないで実現させる方法です。
Excel同様の「メール送信」のお題です。  Visual Basic.NET(2005以降)」の利用者(開発者)は「メール送信」などで悩むようなことは少ないと思います。 現在では、Web上でこのような情報はいくらでも見つかりますから。 ですが、ExcelVBAから移行してくるような「VB初心者」もたくさんいるだろうと思うので、念のためサンプルを挙げておきます。
プロジェクトのサンプルはダウンロードできますが、今回は「Visual Basic 2008 Express Edition」で作成しています。
これは昨今のセキュリティソフトの対策でもあります。   このページの方法は、「メールフォームにPOSTする。」ExcelVBAとして紹介している方法と全く同じ機能を実装するものです。 POSTされたメッセージを受け取る側のASPのページのサンプルも「メールフォームにPOSTする。」の方に紹介しています。
※昨今のセキュリティソフトは機能が強化されていて、プログラムから確認なくメールが送信されるのをブロックしてくるケースが増えています。 これはこれでセキュリティ上の機能として必要な場合があるわけですが、逆効果として社内で認知されているプログラムからのメール送信までもブロックされてしまうという結果になります。 個々のクライアントについて、セキュリティソフトの設定を変更して当該プログラムのメール送信をブロックから除外させることはできると思いますが、 確実に設定変更されているという「保証」が取れないことになりますから、そのような環境についてはこのページの方法は有効だと思います。

前ページと同様に必要項目を入力して、「送信」ボタンで送信されます。
簡単なフォームを用意
(画像をクリックすると、プロジェクトフォルダの圧縮ファイルがダウンロードできます。)
こんなフォームを用意してあり「送信」ボタンで送信されるようにしてあります。

実際に送信されると、
送信成功のメッセージ
このようにメッセージが表示されます。

送信が失敗した場合は、
送信失敗のメッセージ
このようにエラーメッセージが表示されます。
この画像のメッセージは、対象のWebページが見つからない状態のものですが、送信Webページを経由してSMTPサーバから返されるメッセージについてはもう少し詳細なものになると思います。

では、このサンプルのソースコードを紹介します。

'*******************************************************************************
'   メール送信のテスト3(Web上のメール送信フォームへのPOST)
'
'   作成者:井上治  URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'*******************************************************************************
Imports System.Text
Imports System.Web              ' 参照に追加すること
Public Class frmSendMailTEST3
    Private Const g_cnsTitle As String = "メール送信のテスト"
    Private Const g_cnsOK As String = "OK"
    '---------------------------------------------------------------------------
    '  ↓メール送信でPOSTする先のURLを指定して下さい。
    Private Const g_cnsMailUrl As String = "http://localhost/MailSend.asp"

    '***************************************************************************
    '   「送信」ボタンのクリック
    '***************************************************************************
    Private Sub BTN_SEND_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BTN_SEND.Click
        '-----------------------------------------------------------------------
        ' 発信元
        Dim strFrom As String = TXT_FROM.Text.Trim
        ' 宛先(複数の場合はカンマで区切る)
        Dim strTo As String = TXT_TO.Text.Trim
        ' CC(複数の場合はカンマで区切る)
        Dim strCc As String = TXT_CC.Text.Trim
        ' BCC(複数の場合はカンマで区切る)
        Dim strBcc As String = TXT_BCC.Text.Trim
        ' 件名
        Dim strSubj As String = TXT_SUBJ.Text.Trim
        ' 本文
        Dim strBody As String = TXT_BODY.Text.Trim
        '-----------------------------------------------------------------------
        ' 入力内容のチェック
        If strFrom = "" Then
            MessageBox.Show("「発信元」が入力されていません。", _
                g_cnsTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        ElseIf strTo = "" Then
            MessageBox.Show("「宛先」が入力されていません。", _
                g_cnsTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        ElseIf strSubj = "" Then
            MessageBox.Show("「件名」が入力されていません。", _
                g_cnsTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        ElseIf strBody = "" Then
            MessageBox.Show("「本文」が入力されていません。", _
                g_cnsTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If
        '-----------------------------------------------------------------------
        ' 文字コードを指定(シフトJISにしてあります)
        Dim objEncode As Encoding = Encoding.GetEncoding("shift_jis")
        ' 送信文字列を編集
        Dim strPostString As String = _
            "TXT_FROM=" & HttpUtility.UrlEncode(strFrom, objEncode) & _
            "&TXT_TO=" & HttpUtility.UrlEncode(strTo, objEncode) & _
            "&TXT_CC=" & HttpUtility.UrlEncode(strCc, objEncode) & _
            "&TXT_BCC=" & HttpUtility.UrlEncode(strBcc, objEncode) & _
            "&TXT_SUBJ=" & HttpUtility.UrlEncode(strSubj, objEncode) & _
            "&TXT_BODY=" & HttpUtility.UrlEncode(strBody, objEncode)
        '-----------------------------------------------------------------------
        ' 送信処理(Webサーバのメール送信用ASPに引き渡す)
        BTN_SEND.Enabled = False
        Try
            Dim objWebClient As New System.Net.WebClient()
            With objWebClient
                .Encoding = objEncode           ' 文字コードを指定
                ' ヘッダにContent-Typeを加える
                .Headers.Add("Content-Type", "application/x-www-form-urlencoded")
                ' データを送信し、また受信する
                Dim strRet As String = .UploadString(g_cnsMailUrl, strPostString)
                ' 表示ページを破棄
                .Dispose()
                ' 送信結果表示
                If strRet = g_cnsOK Then
                    ' 完了メッセージ
                    MessageBox.Show("メールを送信しました。", g_cnsTitle, _
                        MessageBoxButtons.OK, MessageBoxIcon.Information)
                    ' 発信元以外をクリア
                    TXT_TO.Text = ""
                    TXT_CC.Text = ""
                    TXT_BCC.Text = ""
                    TXT_SUBJ.Text = ""
                    TXT_BODY.Text = ""
                Else
                    ' エラー表示
                    MessageBox.Show("メール送信に失敗しました。" & vbCr & strRet, _
                        g_cnsTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
                End If
            End With
        Catch ex As Exception
            ' エラー表示
            MessageBox.Show("メール送信に失敗しました。" & vbCr & ex.Message, _
                g_cnsTitle, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        BTN_SEND.Enabled = True
    End Sub

    '-----------------------------<< End of Source >>---------------------------
End Class

※このサンプルはいきなり動作させてもメール送信は実現しません。

    '  ↓メール送信でPOSTする先のURLを指定して下さい。
    Private Const g_cnsMailUrl As String = "http://localhost/MailSend.asp"
必ずこのPOST先のURLに当たる環境を用意した上で動作確認して下さい。

※ここでPOSTされたメッセージの受け取りページは、「メールフォームにPOSTする。」で紹介しているものになります。