NSDSmtp メンバ

Smtpでメール送信をします。


●コンストラクタ

名前

説明

NSDSmtp

NSDSmtpを初期化します。


●プロパティの一覧

名前

説明

DisplayNameBase64

表示名をBase64で送信するかを指定します。

CallCount_SmtpClient_SendCompleted

非同期送信時の送信終了イベントの呼び出し回数を確認するカウンタで使用します。


●メソッドの一覧

名前

引数

戻り値

説明

Dispose

なし

なし

リソースの解放を行います。
※終了時に必ず呼び出します。

(内部でCls_Dispose()を呼び出しています終了処理でCls_Dispose()を呼び出している場合は、呼び出す必要はありません。)

Cls_Dispose

なし

なし

リソースの解放を行います。
※終了時に必ず呼び出します。

(終了処理でDispose()を呼び出している場合は、呼び出す必要はありません。)

SetMailerName

( String )

Boolean型

メーラー名を設定します。

GetMailerName

なし

String型

メーラー名を取得します。

SetTextEncoding

 

( System.Text.Encoding )

Boolean型

表示名と添付ファイル名のエンコード方式をSystem.Text.Encodingで設定します。

( MAIL_ENCODING )

Boolean型

表示名と添付ファイル名のエンコード方式をコードページで設定します。

GetTextEncoding

なし

System.Text.Encoding型

表示名と添付ファイル名のエンコード方式を取得します。

SetFromAddress

( String , String )

Boolean型

メールの差出人を設定します。

GetFromAddress

( String , String )

Boolean型

メールの差出人を取得します。

SetSenderAddress

( String , String )

Boolean型

メッセージの差出人を設定します。

GetSenderAddress

( String , String )

Boolean型

メッセージの差出人を取得します。

SetAddress

( String , MAIL_SMTP_RECIPIENTTYPE , [String] )

Boolean型

1アドレスを指定しTo、Cc、Bccのアドレスを設定します。

( String() , MAIL_SMTP_RECIPIENTTYPE )

Boolean型

複数アドレスを指定しTo、Cc、Bccのアドレスを設定します。

( String() , String() , MAIL_SMTP_RECIPIENTTYPE )

Boolean型

複数アドレス、表示名を指定しTo、Cc、Bccのアドレスを設定します。

SetServerInfo

( MAIL_SMTP_Server_INFO )

Boolean型

サーバー情報を設定します。

GetServerInfo

( MAIL_SMTP_Server_INFO )

Boolean型

サーバー情報を取得します。

SetAccountInfo

( String , String )

Boolean型

アカウント情報を設定します。

GetAccountInfo

( String , String )

Boolean型

アカウント情報を取得します。

SetAttachment

( String )

Boolean型

1つの添付ファイルを設定します。

( String() )

Boolean型

複数の添付ファイルを設定します。

SetSendInfo

( MAIL_SEND_INFO )

Boolean型

メール送信情報用のクラスを設定します。

SendMail

( [Boolean] )

Boolean型

メールを送信します。

GetSendErrNo

なし

MAIL_SEND_ERR

送信処理後のエラー番号を戻します。

GetSendErrMsg

なし

String型

送信処理後のエラーメッセージを戻します。

IsSendAsync

なし

Boolean型

非同期送信命令を実行しているかを戻します。
SendMail(False)の戻り値がFalseの場合に確認用で使用します。

IsSend

なし

Boolean型

非同期送信中かを返します。

SendeStop

なし

Boolean型

非同期送信を中止します。


●イベントの一覧

名前

引数

戻り値

説明

SmtpClient_SendCompleted

( System.ComponentModel.AsyncCompletedEventArgs )

なし

非同期送信の送信終了イベント。


●データ用クラスの一覧

名前:MAIL_SEND_INFO

構文:

Public Class MAIL_SEND_INFO
    Public Subject As String = Nothing
    Public SubjectEncode As System.Text.Encoding
    Public SubjectBase64 As Boolean = True
    Public Body As String = Nothing
    Public BodyEncode As System.Text.Encoding
    Public BodyTransferEncoding As CONTENT_TRANSFER_ENCODING = CONTENT_TRANSFER_ENCODING.Base64
    Public Priority As MAIL_PRIORITY = MAIL_PRIORITY.Normal
    Public ReadingCheck As Boolean = False
    Public DeliveryNotification As Boolean = False
End Class

内容: メール送信情報用のクラス。。

名前

説明

Subject

String

件名。(既定値:Nothing)

SubjectEncode

System.Text.Encoding

件名のエンコード。(既定値:MAIL_ENCODING.iso_2022_jp_1byteKatakana)

SubjectBase64

Boolean

件名をBase64で送信するかの設定。(既定値:True  Base64で送信。)

Body

String

本文。(既定値:Nothing)

BodyEncode

System.Text.Encoding

本文のエンコード。(既定値:MAIL_ENCODING.iso_2022_jp_1byteKatakana)

BodyTransferEncoding

CONTENT_TRANSFER_ENCODING

本文のエンコード方式。(既定値:CONTENT_TRANSFER_ENCODING.Base64)

Priority

MAIL_PRIORITY

重要度。(既定値:MAIL_PRIORITY.Normal)

ReadingCheck

Boolean

開封確認。(既定値:False)

DeliveryNotification

Boolean

配信通知。(既定値:False)

 

名前:MAIL_SMTP_Server_INFO

構文:

Public Class OUTLOOK_FOLDER
    Public Host As String = Nothing
    Public Port As Int32 = 25
    Public TimeOut As Int32 = 100000
    Public AttestationType As MAIL_ATTESTATION_TYPE = MAIL_ATTESTATION_TYPE.Attestation_Account
    Public DeliveryMethod As SmtpDeliveryMethod = SmtpDeliveryMethod.Network
End Class

内容:サーバー情報。

名前

説明

Host

String

ホスト名またはIPアドレス。(既定値:Nothing)

Port

Int32

SMTPポート番号。(既定値:25)

TimeOut

Int32

タイムアウトする時間(ミリ秒)。(既定値:100000)

AttestationType

MAIL_ATTESTATION_TYPE

認証タイプ。(既定値:MAIL_ATTESTATION_TYPE.Attestation_Account)

DeliveryMethod

SmtpDeliveryMethod

送信方法。(既定値:SmtpDeliveryMethod.Network)

 


●定数の一覧

名前:MAIL_ATTESTATION_TYPE (認証タイプ)

名前

内容

Attestation_Account

アカウント認証。

Attestation_windwos

Windows認証。

UnAttestation

認証なし。

名前:MAIL_ENCODING (エンコード種類 *がついているコードページは、基になるプラットフォームに関係なく.NET Frameworkでネイティブにサポートされています。)

名前

内容

IBM037

IBM EBCDIC (US - カナダ)

IBM437

OEM アメリカ合衆国

IBM500

IBM EBCDIC (インターナショナル)

ASMO_708

アラビア語 (ASMO 708)

DOS_720

アラビア語 (DOS)

ibm737

ギリシャ語 (DOS)

ibm775

バルト言語 (DOS)

ibm850

西ヨーロッパ言語 (DOS)

ibm852

中央ヨーロッパ言語 (DOS)

IBM855

OEM キリル

ibm857

トルコ語 (DOS)

IBM00858

OEM マルチリンガル ラテン I

IBM860

ポルトガル語 (DOS)

ibm861

アイスランド語 (DOS)

DOS_862

ヘブライ語 (DOS)

IBM863

フランス語 (カナダ) (DOS)

IBM864

アラビア語 (864)

IBM865

北欧 (DOS)

cp866

キリル言語 (DOS)

ibm869

ギリシャ語, Modern (DOS)

IBM870

IBM EBCDIC (多国語ラテン 2)

windows_874

タイ語 (Windows)

cp875

IBM EBCDIC (ギリシャ語 Modern)

shift_jis

日本語 (シフト JIS)

gb2312

簡体字中国語 (GB2312) *

ks_c_5601_1987

韓国語

big5

繁体字中国語 (Big5)

IBM1026

IBM EBCDIC (トルコ語ラテン 5)

IBM01047

IBM ラテン-1

IBM01140

IBM EBCDIC (US - カナダ - ヨーロッパ)

IBM01141

IBM EBCDIC (ドイツ - ヨーロッパ)

IBM01142

IBM EBCDIC (デンマーク - ノルウェー - ヨーロッパ)

IBM01143

IBM EBCDIC (フィンランド - スウェーデン - ヨーロッパ)

IBM01144

IBM EBCDIC (イタリア - ヨーロッパ)

IBM01145

IBM EBCDIC (スペイン - ヨーロッパ)

IBM01146

IBM EBCDIC (UK - ヨーロッパ)

IBM01147

IBM EBCDIC (フランス - ヨーロッパ)

IBM01148

IBM EBCDIC (インターナショナル - ヨーロッパ)

IBM01149

IBM EBCDIC (アイスランド語 - ヨーロッパ)

utf_16

Unicode *

unicodeFFFE

Unicode (ビッグ エンディアン) *

windows_1250

中央ヨーロッパ言語 (Windows)

windows_1251

キリル言語 (Windows

Windows_1252

西ヨーロッパ言語 (Windows) *

windows_1253

ギリシャ語 (Windows)

windows_1254

トルコ語 (Windows)

windows_1255

ヘブライ語 (Windows)

windows_1256

アラビア語 (Windows)

windows_1257

バルト言語 (Windows)

windows_1258

ベトナム語 (Windows)

Johab

韓国語 (Johab)

macintosh

西ヨーロッパ言語 (Mac)

x_mac_japanese

日本語 (Mac)

x_mac_chinesetrad

繁体字中国語 (Mac)

x_mac_korean

韓国語 (Mac) *

x_mac_arabic

アラビア語 (Mac)

x_mac_hebrew

ヘブライ語 (Mac)

x_mac_greek

ギリシャ語 (Mac)

x_mac_cyrillic

キリル言語 (Mac)

x_mac_chinesesimp

簡体字中国語 (Mac) *

x_mac_romanian

ルーマニア語 (Mac)

x_mac_ukrainian

ウクライナ語 (Mac)

x_mac_thai

タイ語 (Mac)

x_mac_ce

中央ヨーロッパ言語 (Mac)

x_mac_icelandic

アイスランド語 (Mac)

x_mac_turkish

トルコ語 (Mac)

x_mac_croatian

クロアチア語 (Mac)

utf_32

Unicode (UTF-32) *

utf_32BE

Unicode (UTF-32 ビッグ エンディアン) *

x_Chinese_CNS

繁体字中国語 (CNS)

x_cp20001

TCA 台湾

x_Chinese_Eten

繁体字中国語 (Eten)

x_cp20003

IBM5550 台湾

x_cp20004

TeleText 台湾

x_cp20005

Wang 台湾

x_IA5

西ヨーロッパ言語 (IA5)

x_IA5_German

ドイツ語 (IA5)

x_IA5_Swedish

スウェーデン語 (IA5)

x_IA5_Norwegian

ノルウェー語 (IA5)

us_ascii

US-ASCII *

x_cp20261

T.61

x_cp20269

ISO -6937

IBM273

IBM EBCDIC (ドイツ)

IBM277

IBM EBCDIC (デンマーク - ノルウェー)

IBM278

IBM EBCDIC (フィンランド - スウェーデン)

IBM280

IBM EBCDIC (イタリア)

IBM284

IBM EBCDIC (スペイン)

IBM285

IBM EBCDIC (UK)

IBM290

IBM EBCDIC (日本語カタカナ)

IBM297

IBM EBCDIC (フランス)

IBM420

IBM EBCDIC (アラビア語)

IBM423

IBM EBCDIC (ギリシャ語)

IBM424

IBM EBCDIC (ヘブライ語)

x_EBCDIC_KoreanExtended

IBM EBCDIC (韓国語 Extended)

IBM_Thai

IBM EBCDIC (タイ語)

koi8_r

キリル言語 (KOI8-R)

IBM871

IBM EBCDIC (アイスランド語)

IBM880

IBM EBCDIC (キリル言語 - ロシア語)

IBM905

IBM EBCDIC (トルコ語)

IBM00924

IBM ラテン-1

EUC__JP

日本語 (JIS 0208-1990 および 0212-1990)

x_cp20936

簡体字中国語 (GB2312-80) *

x_cp20949

韓国語 Wansung *

cp1025

IBM EBCDIC (キリル言語 セルビア - ブルガリア)

koi8_u

キリル言語 (KOI8-U)

iso_8859_1

西ヨーロッパ言語 (ISO) *

iso_8859_2

中央ヨーロッパ言語 (ISO)

iso_8859_3

ラテン 3 (ISO)

iso_8859_4

バルト言語 (ISO)

iso_8859_5

キリル言語 (ISO)

iso_8859_6

アラビア語 (ISO)

iso_8859_7

ギリシャ語 (ISO)

iso_8859_8

ヘブライ語 (ISO-Visual) *

iso_8859_9

トルコ語 (ISO)

iso_8859_13

エストニア語 (ISO)

iso_8859_15

ラテン 9 (ISO)

x_Europa

ヨーロッパ

iso_8859_8_i

ヘブライ語 (ISO-Logical) *

iso_2022_jp

日本語 (JIS) *

csISO2022JP

日本語 (JIS 1 バイト カタカナ可) *

iso_2022_jp_1byteKatakana

日本語 (JIS 1 バイト カタカナ可 - SO/SI) *

iso_2022_kr

韓国語 (ISO) *

x_cp50227

簡体字中国語 (ISO-2022) *

euc_jp

日本語 (EUC) *

EUC_CN

簡体字中国語 (EUC) *

euc_kr

韓国語 (EUC) *

hz_gb_2312

簡体字中国語 (HZ) *

GB18030

簡体字中国語 (GB18030) *

x_iscii_de

ISCII デバナガリ文字 *

x_iscii_be

ISCII ベンガル語 *

x_iscii_ta

ISCII タミール語 *

x_iscii_te

ISCII テルグ語 *

x_iscii_as

ISCII アッサム語 *

x_iscii_or

ISCII オリヤー語 *

x_iscii_ka

ISCII カナラ語 *

x_iscii_ma

ISCII マラヤラム語 *

x_iscii_gu

ISCII グジャラート語 *

x_iscii_pa

ISCII パンジャブ語 *

utf_7

Unicode (UTF-7) *

utf_8

Unicode (UTF-8) *

名前:MAIL_PRIORITY (重要度)

名前

内容

Normal

普通。

Low

低い。

High

高い。

名前:MAIL_SMTP_RECIPIENTTYPE (受け取り人のタイプ)

名前

内容

SmtpTo

To。

SmtpCc

Cc。

SmtpBcc

Bcc。

名前:MAIL_SEND_ERR (送信時のエラー)

名前

内容

NoErr

エラーなし。

NotToOrCcOrBccAddress

To、CC、Bccが一つも設定されていない。

NoFormAddress

Formアドレスが設定されていない。

NoHost

Hostが設定されていない。

PortZero

ポートが0です。

ErrSmtpException

SMTPサーバーへの接続に失敗しました。
 または
認証に失敗しました 。
 または
操作がタイムアウトしました 。

NoFormToMessage

FromがNull。
 または
ToがNull。
 または
messageがnull。

NoToCcBcc

To、CC、Bccが一つも設定されていない。

ErrInvalidOperationException

非同期送信中。
 または
Host設定されていない 。
 または
ポート番号が0。

NotServerInfo

サーバー情報が設定されていません。

NotAccount

アカウントが設定されていません。

StopSend

送信を中止しました。

SendTimeOut

タイムアウトしました。

UnKnownErr

不明なエラー。

名前:CONTENT_TRANSFER_ENCODING (本文のエンコード方式)

名前

内容

DefaultEncodeing

デフォルトのEncodeing(QuotedPrintable)。

Base64

Base64。

SevenBit

7bit。


●NSDSmtpコンストラクタの説明

構文:Public Sub New()

使用法:Public ClsPub_Smtp As New NSDSmtp

引数:なし。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing(ByVal sender As Object, _
                                  ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                  Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

●NSDSmtpプロパティの説明

名前:DisplayNameBase64

構文:Public Property DisplayNameBase64() As Boolean

機能:表示名をBase64で送信するかを指定します。

引数:なし。

値:Boolean

値の説明:

True :表示名をBase64で送信します。

False:表示名はデフォルトの設定(quoted-printable)で送信されます。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 表示名をBase64で送信.
            ClsPub_Smtp.DisplayNameBase64 = True
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:CallCount_SmtpClient_SendCompleted

構文:Public Property CallCount_SmtpClient_SendCompleted() As Integer

機能:非同期送信時の送信終了イベントの呼び出し回数を確認するカウンタで使用します。

引数:なし。

値:Integer

値の説明:

非同期送信の送信終了時に呼び出される、SmtpClient_SendCompletedイベント内で値を取得、設定します。

SmtpClient_SendCompletedイベントが1回目に呼び出された場合は、値は0です。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.
    Public Bln_Add_SmtpClient_SendCompleted As Boolean = False ' イベントの設定フラグ.
 
    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                If ClsPub_Smtp.IsSend() Then
                    ' 非同期の送信中なので、送信を中止します.
                    ClsPub_Smtp.SendeStop()
                    e.Cancel = True
                Else
                    ' リソースを解放します.
                    ClsPub_Smtp.Cls_Dispose()
                    ClsPub_Smtp = Nothing
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp

            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)

            ' 非同期送信(イベントをセットします).
            AddHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
            Bln_Add_SmtpClient_SendCompleted = True

            ' 送信します.
            Dim Bln_Ret As Boolean = ClsPub_Smtp.SendMail(False)
            If Not Bln_Ret Then
                If Not ClsPub_Smtp.IsSendAsync Then
                    ' 非同期送信を実行していません.
                    SnedErrMsg
                    If Bln_Add_SmtpClient_SendCompleted Then
                        ' イベントを解除します.
                        RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                        Bln_Add_SmtpClient_SendCompleted = False
                    End If
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信の中止.
    Private Sub Button2_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button2.Click
        Try
            If ClsPub_Smtp.IsSend() Then
                ' 非同期の送信中なので、送信を中止します.
                ClsPub_Smtp.SendeStop()
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' 送信に失敗したメッセージを表示.
    Private Sub SnedErrMsg()
        Try
            Dim Str_Msg As String = "送信に失敗しました。"
            Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
 
            MsgBox(Str_Msg)
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' 非同期送信の終了.
    Private Sub SmtpClient_SendCompleted(ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        ' 1回目の呼び出しを確認.
        If ClsPub_Smtp.CallCount_SmtpClient_SendCompleted = 0 Then
            ' 呼び出し件数をカウントアップします.
            ClsPub_Smtp.CallCount_SmtpClient_SendCompleted += 1
 
            Try
                If Bln_Add_SmtpClient_SendCompleted Then
                    ' イベントを解除します.
                    RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                    Bln_Add_SmtpClient_SendCompleted = False
                End If
            Catch ex As Exception
            Finally
                If e.Cancelled Then
                    SnedErrMsg
                Else
                    If (e.Error Is Nothing) Then
                        MsgBox("送信しました。")
                    Else
                        MsgBox("送信エラーが発生しました。")
                    End If
                End If
            End Try
        End If
    End Sub
End Class

●NSDSmtpメソッドの説明

名前:Dispose

構文:Public Sub Dispose()

機能:リソースの解放を行います。

※終了時に必ず呼び出します。

(内部でCls_Dispose()を呼び出しています。終了処理でCls_Dispose()を呼び出している場合は、呼び出す必要はありません。)

引数:なし。

戻り値:なし。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:Cls_Dispose

構文:Public Sub Cls_Dispose()

機能:リソースの解放を行います。

※終了時に必ず呼び出します。

(終了処理でDispose()を呼び出している場合は、呼び出す必要はありません。)

引数:なし。

戻り値:なし。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SetMailerName

構文:Public Function SetMailerName( MailerName ) As Boolean

機能:メーラー名を設定します。

引数:

名前

引数渡しの方法

説明

MailerName

String

値渡し(ByVal)

メーラー名を渡します。
※名前は半角のアルファベット、数字、記号を渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセットします.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メーラー名を表示します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            MsgBox("メーラー:" & ClsPub_Smtp.GetMailerName())
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:GetMailerName

構文:Public Function GetMailerName() As String

機能:メーラー名を取得します。

引数:なし。

戻り値:String

戻り値の説明:

メーラー名を返します。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセットします.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メーラー名を表示します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            MsgBox("メーラー:" & ClsPub_Smtp.GetMailerName())
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SetTextEncoding

機能:表示名と添付ファイル名のエンコード方式を設定します。

@表示名と添付ファイル名のエンコード方式をSystem.Text.Encodingで設定します。

構文:Public Function SetTextEncoding( TextEncoding ) As Boolean

引数:

名前

引数渡しの方法

説明

TextEncoding

System.Text.Encoding

値渡し(ByVal)

エンコード方式をSystem.Text.Encodingで渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 表示名と添付ファイル名のエンコード方式を設定します.
            Dim TEncode As System.Text.Encoding = System.Text.Encoding.GetEncoding("iso-2022-jp")
            ClsPub_Smtp.SetTextEncoding(TEncode)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

A表示名と添付ファイル名のエンコード方式をコードページで設定します。

構文:Public Function SetTextEncoding( Encoding ) As Boolean

引数:

名前

引数渡しの方法

説明

Encoding

MAIL_ENCODING

値渡し(ByVal)

エンコード方式をMAIL_ENCODING(コードページ)で渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 表示名と添付ファイル名のエンコード方式を設定します.
            ClsPub_Smtp.SetTextEncoding(NSDSmtp.MAIL_ENCODING.iso_2022_jp)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

 

名前:GetTextEncoding

構文:Public Function GetTextEncoding() As System.Text.Encoding

機能:表示名と添付ファイル名のエンコード方式を取得します。

引数:なし。

戻り値:System.Text.Encoding

戻り値の説明:

エンコード方式を返します。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' エンコード方式を表示します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 表示名と添付ファイル名のエンコード方式を取得します.
            Dim TEncode As System.Text.Encoding = ClsPub_Smtp.GetTextEncoding()
            MsgBox("エンコード方式:" & TEncode.BodyName)
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SetFromAddress

構文:Public Function SetFromAddress( MailAddress , DispName ) As Boolean

機能:メールの差出人を設定します。

引数:

名前

引数渡しの方法

説明

MailAddress

String

値渡し(ByVal)

差出人のE-Mailアドレスを渡します。

DispName

String

値渡し(ByVal)

差出人の表示名を渡します。
※表示名が設定されていない場合は、E-Mailアドレスを表示名とします。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 差出人E-Mailアドレス.
            Dim Str_FromAddress As String = "" ' <- 差出人E-Mailアドレスをセット.
            ' 表示名.
            Dim Str_FromName As String = ""    ' <- 表示名をセット.

            ' 差出人のユーザー情報を設定します.
            ClsPub_Smtp.SetFromAddress(Str_FromAddress, Str_FromName)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:GetFromAddress

構文:Public Function GetFromAddress( MailAddress , DispName ) As Boolean

機能:メールの差出人を取得します。

引数:

名前

引数渡しの方法

説明

MailAddress

String

参照渡し(ByRef)

差出人のE-Mailアドレスを返します。

DispName

String

参照渡し(ByRef)

差出人の表示名を返します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' 差出人を取得します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 差出人E-Mailアドレス.
            Dim Str_FromAddress As String = ""
            ' 表示名.
            Dim Str_FromName As String = ""

            ' 差出人のユーザー情報を取得します.
            ClsPub_Smtp.GetFromAddress(Str_FromAddress, Str_FromName)
            ' 差出人を表示します.
            MsgBox("差出人E-Mail:" & Str_FromAddress & _
                    ControlChars.CrLf & "表示名:" & Str_FromName)
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SetSenderAddress

構文:Public Function SetSenderAddress( MailAddress , DispName ) As Boolean

機能:メッセージの差出人を設定します。

引数:

名前

引数渡しの方法

説明

MailAddress

String

値渡し(ByVal)

差出人のE-Mailアドレスを渡します。

DispName

String

値渡し(ByVal)

差出人の表示名を渡します。
※表示名が設定されていない場合は、E-Mailアドレスを表示名とします。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 差出人E-Mailアドレス.
            Dim Str_FromAddress As String = "" ' <- 差出人E-Mailアドレスをセット.
            ' 表示名.
            Dim Str_FromName As String = ""    ' <- 表示名をセット.

            ' 差出人のユーザー情報を設定します.
            ClsPub_Smtp.SetFromAddress(Str_FromAddress, Str_FromName)

            ' メッセージの差出人E-Mailアドレス.
            Dim Str_SenderAddress As String = "" ' <- メッセージの差出人E-Mailアドレスをセット.
            ' メッセージの差出人表示名.
            Dim Str_SenderName As String = ""    ' <- メッセージの差出人表示名をセット.
            ' メッセージの差出人を設定します.
            ClsPub_Smtp.SetSenderAddress(Str_SenderAddress, Str_SenderName)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:GetSenderAddress

構文:Public Function GetSenderAddress( MailAddress , DispName ) As Boolean

機能:メッセージの差出人を取得します。

引数:

名前

引数渡しの方法

説明

MailAddress

String

参照渡し(ByRef)

差出人のE-Mailアドレスを返します。

DispName

String

参照渡し(ByRef)

差出人の表示名を返します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メッセージ差出人を取得します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' メッセージの差出人E-Mailアドレス.
            Dim Str_SenderAddress As String = ""
            ' 表示名.
            Dim Str_SenderName As String = ""

            ' メッセージ差出人の情報を取得します.
            ClsPub_Smtp.GetSenderAddress(Str_SenderAddress, Str_SenderName)
            ' 差出人を表示します.
            MsgBox("差出人E-Mail:" & Str_SenderAddress & _
                    ControlChars.CrLf & "表示名:" & Str_SenderName)
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SetAddress

機能:To、Cc、Bccのアドレスを設定します。

@1アドレスを指定しTo、Cc、Bccのアドレスを設定します。

構文:Public Function SetAddress( MailAddress , Type , [DispName] ) As Boolean

引数:

名前

引数渡しの方法

説明

MailAddress

String

値渡し(ByVal)

E-Mailアドレスを渡します。

Type

MAIL_SMTP_RECIPIENTTYPE

値渡し(ByVal)

受け取り人のタイプを渡します。

[DispName]

String

値渡し(ByVal)

表示名を渡します。(既定値:Nothing)

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            ClsPub_Smtp.SetAddress("ToAddress", NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo, "To Name")
            ClsPub_Smtp.SetAddress("CcAddress", NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc, "Cc Name")
            ClsPub_Smtp.SetAddress("BccAddress", NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc, "Bcc Name")
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

A複数アドレスを指定しTo、Cc、Bccのアドレスを設定します。

構文:Public Function SetAddress( MailAddress() , Type ) As Boolean

引数:

名前

引数渡しの方法

説明

MailAddress()

String

値渡し(ByVal)

E-Mailアドレスのリストを渡します。

Type

MAIL_SMTP_RECIPIENTTYPE

値渡し(ByVal)

受け取り人のタイプを渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Ccのセット.
            Dim Str_ToAddress() As String
            Dim Str_CcAddress() As String

            ReDim Str_ToAddress(0 To 1)
            ReDim Str_CcAddress(0)

            Str_ToAddress(0) = "ToAddress1"
            Str_ToAddress(1) = "ToAddress2"
            Str_CcAddress(0) = "CcAddress1"

            ClsPub_Smtp.SetAddress(Str_ToAddress, NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo)
            ClsPub_Smtp.SetAddress(Str_CcAddress, NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc)
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

B複数アドレス、表示名を指定しTo、Cc、Bccのアドレスを設定します。

構文:Public Function SetAddress( MailAddress() , DispName() , Type ) As Boolean

引数:

名前

引数渡しの方法

説明

MailAddress()

String

値渡し(ByVal)

E-Mailアドレスのリストを渡します。

DispName()

String

値渡し(ByVal)

表示名のリストを渡します。

Type

MAIL_SMTP_RECIPIENTTYPE

値渡し(ByVal)

受け取り人のタイプを渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Ccのセット.
            Dim Str_ToAddress() As String
            Dim Str_ToName() As String
            Dim Str_CcAddress() As String
            Dim Str_CcName() As String

            ReDim Str_ToAddress(0 To 1)
            ReDim Str_ToName(0 To 1)
            ReDim Str_CcAddress(0)
            ReDim Str_CcName(0)

            Str_ToAddress(0) = "ToAddress1"
            Str_ToName(0) = "ToName1"
            Str_ToAddress(1) = "ToAddress2"
            Str_ToName(1) = "ToName2"

            Str_CcAddress(0) = "CcAddress1"
            Str_CcName(0) = "CcName1"

            ClsPub_Smtp.SetAddress(Str_ToAddress, Str_ToName, NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo)
            ClsPub_Smtp.SetAddress(Str_CcAddress, Str_CcName, NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc)
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SetServerInfo

構文:Public Function SetServerInfo( ServerInfo ) As Boolean

機能:サーバー情報を設定します。

引数:

名前

引数渡しの方法

説明

ServerInfo

MAIL_SMTP_Server_INFO

値渡し(ByVal)

MAIL_SMTP_Server_INFOを渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセットします.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' サーバー情報を設定します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' サーバー情報.
            Dim ServerInfo As New NSDSmtp.MAIL_SMTP_Server_INFO
            With ServerInfo
                ' 送信サーバー名.
                .Host = ""  ' <- 送信サーバー名をセットします.
                ' ポート番号.
                .Port = 587 ' <- ポート番号をセットします.
                ' タイムアウト.
                .TimeOut = 100000
            End With
            ClsPub_Smtp.SetServerInfo(ServerInfo)
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:GetServerInfo

構文:Public Function GetServerInfo( ServerInfo ) As Boolean

機能:サーバー情報を取得します。

引数:

名前

引数渡しの方法

説明

ServerInfo

MAIL_SMTP_Server_INFO

参照渡し(ByRef)

MAIL_SMTP_Server_INFOを渡し、返します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセットします.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' サーバー情報を取得します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' サーバー情報.
            Dim ServerInfo As New NSDSmtp.MAIL_SMTP_Server_INFO
            ClsPub_Smtp.GetServerInfo(ServerInfo)
            MsgBox("サーバー名:" & ServerInfo.Host)
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SetAccountInfo

構文:Public Function SetAccountInfo( AccountName , Password ) As Boolean

機能:アカウント情報を設定します。

引数:

名前

引数渡しの方法

説明

AccountName

String

値渡し(ByVal)

アカウント名を渡します。

Password

String

値渡し(ByVal)

パスワードを渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' アカウント情報を設定します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' アカウント名.
            Dim Str_AccountName As String = "" ' <- アカウント名をセット.
            ' パスワード.
            Dim Str_Password As String = ""    ' <- パスワードをセット.
            ClsPub_Smtp.SetAccountInfo(Str_AccountName, Str_Password)
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:GetAccountInfo

構文:Public Function GetAccountInfo( AccountName , Password ) As Boolean

機能:アカウント情報を取得します。

引数:

名前

引数渡しの方法

説明

AccountName

String

参照渡し(ByRef)

アカウント名を返します。

Password

String

参照渡し(ByRef)

パスワードを返します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' アカウント情報を設定します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' アカウント名.
            Dim Str_AccountName As String = ""
            ' パスワード.
            Dim Str_Password As String = ""
            ClsPub_Smtp.GetAccountInfo(Str_AccountName, Str_Password)
            MsgBox("アカウント名:" & Str_AccountName & _
                    ControlChars.CrLf & "パスワード:" & Str_Password)
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SetAttachment

機能:添付ファイルを設定します。

@1つの添付ファイルを設定します。

構文:Public Function SetAttachment( FileName ) As Boolean

引数:

名前

引数渡しの方法

説明

FileName

String

値渡し(ByVal)

設定する添付ファイルのフルパス名を渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 添付ファイル.
            ClsPub_Smtp.SetAttachment("C:\MailData\TmpData1.txt")
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

A複数の添付ファイルを設定します。

構文:Public Function SetAttachment( FileName() ) As Boolean

引数:

名前

引数渡しの方法

説明

FileName()

String

値渡し(ByVal)

設定する添付ファイルリストをフルパス名で渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 添付ファイル.
            Dim Str_Attachments() As String = Nothing
            ReDim Str_Attachments(0 To 1)
            Str_Attachments(0) = "C:\MailData\TmpData1.txt"
            Str_Attachments(1) = "C:\MailData\TmpData2.txt"
            ClsPub_Smtp.SetAttachment(Str_Attachments)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

 

名前:SetSendInfo

構文:Public Function SetSendInfo( SI ) As Boolean

機能:メール送信情報用のクラスを設定します。

引数:

名前

引数渡しの方法

説明

SI

MAIL_SEND_INFO

値渡し(ByVal)

メール送信情報用のクラスを渡します。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                            Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                            Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                            Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
                ' 重要度を設定.
                .Priority = NSDSmtp.MAIL_PRIORITY.Normal
                ' 開封済みメッセージを受ける.
                .ReadingCheck = True
                ' 配信通知を取得する.
                .DeliveryNotification = True
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:SendMail

構文:Public Function SendMail( [Synchronization] ) As Boolean

機能:メールのメッセージ(MailItem)が未開封かを確認します。

引数:

名前

引数渡しの方法

説明

[Synchronization]

Boolean

値渡し(ByVal)

True :同期送信を行います。(既定値)
False:非同期送信を行います。

戻り値:Boolean

戻り値の説明:

True:成功 False:失敗

使用例@:同期送信。

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 同期送信.
            If ClsPub_Smtp.SendMail(True) Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

使用例A: 非同期送信。

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.
    Public Bln_Add_SmtpClient_SendCompleted As Boolean = False ' イベントの設定フラグ.
 
    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                If ClsPub_Smtp.IsSend() Then
                    ' 非同期の送信中なので、送信を中止します.
                    ClsPub_Smtp.SendeStop()
                    e.Cancel = True
                Else
                    ' リソースを解放します.
                    ClsPub_Smtp.Cls_Dispose()
                    ClsPub_Smtp = Nothing
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
 
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
 
                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)

            ' 非同期送信(イベントをセットします).
            AddHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
            Bln_Add_SmtpClient_SendCompleted = True
 
            ' 送信します.
            Dim Bln_Ret As Boolean = ClsPub_Smtp.SendMail(False)
            If Not Bln_Ret Then
                If Not ClsPub_Smtp.IsSendAsync Then
                    ' 非同期送信を実行していません.
                    SnedErrMsg
                    If Bln_Add_SmtpClient_SendCompleted Then
                        ' イベントを解除します.
                        RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                        Bln_Add_SmtpClient_SendCompleted = False
                    End If
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信の中止.
    Private Sub Button2_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button2.Click
        Try
            If ClsPub_Smtp.IsSend() Then
                ' 非同期の送信中なので、送信を中止します.
                ClsPub_Smtp.SendeStop()
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信に失敗したメッセージを表示.
    Private Sub SnedErrMsg()
        Try
            Dim Str_Msg As String = "送信に失敗しました。"
            Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
 
            MsgBox(Str_Msg)
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 非同期送信の終了.
    Private Sub SmtpClient_SendCompleted(ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        ' 1回目の呼び出しを確認.
        If ClsPub_Smtp.CallCount_SmtpClient_SendCompleted = 0 Then
            ' 呼び出し件数をカウントアップします.
            ClsPub_Smtp.CallCount_SmtpClient_SendCompleted += 1
 
            Try
                If Bln_Add_SmtpClient_SendCompleted Then
                    ' イベントを解除します.
                    RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                    Bln_Add_SmtpClient_SendCompleted = False
                End If
            Catch ex As Exception
            Finally
                If e.Cancelled Then
                    SnedErrMsg
                Else
                    If (e.Error Is Nothing) Then
                        MsgBox("送信しました。")
                    Else
                        MsgBox("送信エラーが発生しました。")
                    End If
                End If
            End Try
        End If
    End Sub
End Class

 

名前:GetSendErrNo

構文:Public Function GetSendErrNo() As MAIL_SEND_ERR

機能:送信処理後のエラー番号を戻します。

引数:なし。

戻り値:MAIL_SEND_ERR

戻り値の説明:

エラー番号を戻します。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "エラー番号:" & ClsPub_Smtp.GetSendErrNo()
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:GetSendErrMsg

構文:Public Function GetSendErrMsg() As String

機能:送信処理後のエラーメッセージを戻します。

引数:なし。

戻り値:String

戻り値の説明:

エラーメッセージを戻します。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.

    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                ClsPub_Smtp.Cls_Dispose()
                ClsPub_Smtp = Nothing
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = "" ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 同期送信.
            If ClsPub_Smtp.SendMail() Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "エラー番号:" & ClsPub_Smtp.GetSendErrNo()
                Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
                MsgBox(Str_Msg)
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
End Class

 

名前:IsSendAsync

構文:Public Function IsSendAsync() As Boolean

機能: 非同期送信命令を実行しているかを戻します。

SendMail(False)の戻り値がFalseの場合に確認用で使用します。

引数:なし。

戻り値:Boolean

戻り値の説明:

True :非同期送信命令を実行しています。
False:非同期送信命令を実行していません。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.
    Public Bln_Add_SmtpClient_SendCompleted As Boolean = False ' イベントの設定フラグ.
 
    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                If ClsPub_Smtp.IsSend() Then
                    ' 非同期の送信中なので、送信を中止します.
                    ClsPub_Smtp.SendeStop()
                    e.Cancel = True
                Else
                    ' リソースを解放します.
                    ClsPub_Smtp.Cls_Dispose()
                    ClsPub_Smtp = Nothing
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
 
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
 
                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)

            ' 非同期送信(イベントをセットします).
            AddHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
            Bln_Add_SmtpClient_SendCompleted = True
 
            ' 送信します.
            Dim Bln_Ret As Boolean = ClsPub_Smtp.SendMail(False)
            If Not Bln_Ret Then
                If Not ClsPub_Smtp.IsSendAsync Then
                    ' 非同期送信を実行していません.
                    SnedErrMsg
                    If Bln_Add_SmtpClient_SendCompleted Then
                        ' イベントを解除します.
                        RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                        Bln_Add_SmtpClient_SendCompleted = False
                    End If
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信の中止.
    Private Sub Button2_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button2.Click
        Try
            If ClsPub_Smtp.IsSend() Then
                ' 非同期の送信中なので、送信を中止します.
                ClsPub_Smtp.SendeStop()
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信に失敗したメッセージを表示.
    Private Sub SnedErrMsg()
        Try
            Dim Str_Msg As String = "送信に失敗しました。"
            Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
 
            MsgBox(Str_Msg)
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 非同期送信の終了.
    Private Sub SmtpClient_SendCompleted(ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        ' 1回目の呼び出しを確認.
        If ClsPub_Smtp.CallCount_SmtpClient_SendCompleted = 0 Then
            ' 呼び出し件数をカウントアップします.
            ClsPub_Smtp.CallCount_SmtpClient_SendCompleted += 1
 
            Try
                If Bln_Add_SmtpClient_SendCompleted Then
                    ' イベントを解除します.
                    RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                    Bln_Add_SmtpClient_SendCompleted = False
                End If
            Catch ex As Exception
            Finally
                If e.Cancelled Then
                    SnedErrMsg
                Else
                    If (e.Error Is Nothing) Then
                        MsgBox("送信しました。")
                    Else
                        MsgBox("送信エラーが発生しました。")
                    End If
                End If
            End Try
        End If
    End Sub
End Class

 

名前:IsSend

構文:Public Function IsSend() As Boolean

機能:非同期送信中かを返します。

引数:なし。

戻り値:Boolean

戻り値の説明:

True :非同期送信中。
False:非同期の送信は行っていません。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.
    Public Bln_Add_SmtpClient_SendCompleted As Boolean = False ' イベントの設定フラグ.
 
    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                If ClsPub_Smtp.IsSend() Then
                    ' 非同期の送信中なので、送信を中止します.
                    ClsPub_Smtp.SendeStop()
                    e.Cancel = True
                Else
                    ' リソースを解放します.
                    ClsPub_Smtp.Cls_Dispose()
                    ClsPub_Smtp = Nothing
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
 
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
 
                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)

            ' 非同期送信(イベントをセットします).
            AddHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
            Bln_Add_SmtpClient_SendCompleted = True
 
            ' 送信します.
            Dim Bln_Ret As Boolean = ClsPub_Smtp.SendMail(False)
            If Not Bln_Ret Then
                If Not ClsPub_Smtp.IsSendAsync Then
                    ' 非同期送信を実行していません.
                    SnedErrMsg
                    If Bln_Add_SmtpClient_SendCompleted Then
                        ' イベントを解除します.
                        RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                        Bln_Add_SmtpClient_SendCompleted = False
                    End If
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信の中止.
    Private Sub Button2_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button2.Click
        Try
            If ClsPub_Smtp.IsSend() Then
                ' 非同期の送信中なので、送信を中止します.
                ClsPub_Smtp.SendeStop()
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信に失敗したメッセージを表示.
    Private Sub SnedErrMsg()
        Try
            Dim Str_Msg As String = "送信に失敗しました。"
            Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
 
            MsgBox(Str_Msg)
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 非同期送信の終了.
    Private Sub SmtpClient_SendCompleted(ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        ' 1回目の呼び出しを確認.
        If ClsPub_Smtp.CallCount_SmtpClient_SendCompleted = 0 Then
            ' 呼び出し件数をカウントアップします.
            ClsPub_Smtp.CallCount_SmtpClient_SendCompleted += 1
 
            Try
                If Bln_Add_SmtpClient_SendCompleted Then
                    ' イベントを解除します.
                    RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                    Bln_Add_SmtpClient_SendCompleted = False
                End If
            Catch ex As Exception
            Finally
                If e.Cancelled Then
                    SnedErrMsg
                Else
                    If (e.Error Is Nothing) Then
                        MsgBox("送信しました。")
                    Else
                        MsgBox("送信エラーが発生しました。")
                    End If
                End If
            End Try
        End If
    End Sub
End Class

 

名前:SendeStop

構文:Public Function SendeStop() As Boolean

機能:非同期送信を中止します。

引数:なし。

戻り値:Boolean

戻り値の説明:

True :中止処理を行いました。
False:中止できません。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.
    Public Bln_Add_SmtpClient_SendCompleted As Boolean = False ' イベントの設定フラグ.
 
    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                If ClsPub_Smtp.IsSend() Then
                    ' 非同期の送信中なので、送信を中止します.
                    ClsPub_Smtp.SendeStop()
                    e.Cancel = True
                Else
                    ' リソースを解放します.
                    ClsPub_Smtp.Cls_Dispose()
                    ClsPub_Smtp = Nothing
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
 
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
 
                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)

            ' 非同期送信(イベントをセットします).
            AddHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
            Bln_Add_SmtpClient_SendCompleted = True
 
            ' 送信します.
            Dim Bln_Ret As Boolean = ClsPub_Smtp.SendMail(False)
            If Not Bln_Ret Then
                If Not ClsPub_Smtp.IsSendAsync Then
                    ' 非同期送信を実行していません.
                    SnedErrMsg
                    If Bln_Add_SmtpClient_SendCompleted Then
                        ' イベントを解除します.
                        RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                        Bln_Add_SmtpClient_SendCompleted = False
                    End If
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信の中止.
    Private Sub Button2_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button2.Click
        Try
            If ClsPub_Smtp.IsSend() Then
                ' 非同期の送信中なので、送信を中止します.
                ClsPub_Smtp.SendeStop()
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信に失敗したメッセージを表示.
    Private Sub SnedErrMsg()
        Try
            Dim Str_Msg As String = "送信に失敗しました。"
            Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
 
            MsgBox(Str_Msg)
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 非同期送信の終了.
    Private Sub SmtpClient_SendCompleted(ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        ' 1回目の呼び出しを確認.
        If ClsPub_Smtp.CallCount_SmtpClient_SendCompleted = 0 Then
            ' 呼び出し件数をカウントアップします.
            ClsPub_Smtp.CallCount_SmtpClient_SendCompleted += 1
 
            Try
                If Bln_Add_SmtpClient_SendCompleted Then
                    ' イベントを解除します.
                    RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                    Bln_Add_SmtpClient_SendCompleted = False
                End If
            Catch ex As Exception
            Finally
                If e.Cancelled Then
                    SnedErrMsg
                Else
                    If (e.Error Is Nothing) Then
                        MsgBox("送信しました。")
                    Else
                        MsgBox("送信エラーが発生しました。")
                    End If
                End If
            End Try
        End If
    End Sub
End Class

 


●NSDSmtpイベントの説明

 

名前:SmtpClient_SendCompleted

構文:Public Event SmtpClient_SendCompleted( e )

機能:非同期送信の送信終了イベント。

引数:

名前

引数渡しの方法

説明

e

System.ComponentModel.AsyncCompletedEventArgs

値渡し(ByVal)

非同期操作の結果を渡します。

戻り値:なし。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.
    Public Bln_Add_SmtpClient_SendCompleted As Boolean = False ' イベントの設定フラグ.
 
    ' FormClosingイベント.
    Private Sub Form1_FormClosing( ByVal sender As Object, _
                                   ByVal e As System.Windows.Forms.FormClosingEventArgs) _
                                   Handles Me.FormClosing
        Try
            ' リソースを解放します.
            If Not (ClsPub_Smtp Is Nothing) Then
                If ClsPub_Smtp.IsSend() Then
                    ' 非同期の送信中なので、送信を中止します.
                    ClsPub_Smtp.SendeStop()
                    e.Cancel = True
                Else
                    ' リソースを解放します.
                    ClsPub_Smtp.Cls_Dispose()
                    ClsPub_Smtp = Nothing
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' Loadイベント.
    Private Sub Form1_Load( ByVal sender As System.Object, _
                            ByVal e As System.EventArgs) _
                            Handles MyBase.Load
        Try
            ' SMTP用クラスを作成します.
            ClsPub_Smtp = New NSDSmtp
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB.NET SMTP Sample Mail Program.")
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' メールを送信します.
    Private Sub Button1_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button1.Click
        Try
            ' 宛先、Cc、Bccのセット.
            Dim Str_Address As String = "" ' アドレス.
            For RecipientType As NSDSmtp.MAIL_SMTP_RECIPIENTTYPE = _
                NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo To NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc

                Select Case RecipientType
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpTo
                        ' To.
                        Str_Address = "" ' <- Toアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpCc
                        ' Cc.
                        Str_Address = "" ' <- Ccアドレスをセット(';'区切り).
                    Case NSDSmtp.MAIL_SMTP_RECIPIENTTYPE.SmtpBcc
                        ' Bcc.
                        Str_Address = "" ' <- Bccアドレスをセット(';'区切り).
                End Select
                Dim Str_Data() As String = Str_Address.Split(";"c)
                For Each Str_Add As String In Str_Data
                    If Not (Str_Add Is Nothing) Then
                        ClsPub_Smtp.SetAddress(Str_Add, RecipientType)
                    End If
                Next
            Next RecipientType
            ' 件名、本文のセット.
            Dim SendInfo As New NSDSmtp.MAIL_SEND_INFO
            With SendInfo
                ' 件名.
                .Subject = "" ' <- 件名をセット.
                ' 本文.
                .Body = ""    ' <- 本文をセット.
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
 
            ' 非同期送信(イベントをセットします).
            AddHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
            Bln_Add_SmtpClient_SendCompleted = True
 
            ' 送信します.
            Dim Bln_Ret As Boolean = ClsPub_Smtp.SendMail(False)
            If Not Bln_Ret Then
                If Not ClsPub_Smtp.IsSendAsync Then
                    ' 非同期送信を実行していません.
                    SnedErrMsg
                    If Bln_Add_SmtpClient_SendCompleted Then
                        ' イベントを解除します.
                        RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                        Bln_Add_SmtpClient_SendCompleted = False
                    End If
                End If
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 送信の中止.
    Private Sub Button2_Click( ByVal sender As System.Object, _
                               ByVal e As System.EventArgs) _
                               Handles Button2.Click
        Try
            If ClsPub_Smtp.IsSend() Then
                ' 非同期の送信中なので、送信を中止します.
                ClsPub_Smtp.SendeStop()
            End If
        Catch ex As Exception
        Finally
        End Try
    End Sub

    ' 送信に失敗したメッセージを表示.
    Private Sub SnedErrMsg()
        Try
            Dim Str_Msg As String = "送信に失敗しました。"
            Str_Msg &= ControlChars.CrLf & "「" & ClsPub_Smtp.GetSendErrMsg() & "」"
 
            MsgBox(Str_Msg)
        Catch ex As Exception
        Finally
        End Try
    End Sub
 
    ' 非同期送信の終了.
    Private Sub SmtpClient_SendCompleted(ByVal e As System.ComponentModel.AsyncCompletedEventArgs)
        ' 1回目の呼び出しを確認.
        If ClsPub_Smtp.CallCount_SmtpClient_SendCompleted = 0 Then
            ' 呼び出し件数をカウントアップします.
            ClsPub_Smtp.CallCount_SmtpClient_SendCompleted += 1

            Try
                If Bln_Add_SmtpClient_SendCompleted Then
                    ' イベントを解除します.
                    RemoveHandler ClsPub_Smtp.SmtpClient_SendCompleted, AddressOf SmtpClient_SendCompleted
                    Bln_Add_SmtpClient_SendCompleted = False
                End If
            Catch ex As Exception
            Finally
                If e.Cancelled Then
                    SnedErrMsg
                Else
                    If (e.Error Is Nothing) Then
                        MsgBox("送信しました。")
                    Else
                        MsgBox("送信エラーが発生しました。")
                    End If
                End If
            End Try
        End If
    End Sub
End Class

Copyright (C) 2009-2010 Nihon System Developer Corp. All Rights Reserved.