NSDSmtp メンバ

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

簡単な引数渡しでのメール送信。


●コンストラクタ

名前 説明
NSDSmtp NSDSmtpを初期化します。

●プロパティの一覧

名前 説明
DisplayNameBase64 表示名をBase64で送信するかを指定します。
CallCount_SmtpClient_SendCompleted 非同期送信時の送信終了イベントの呼び出し回数を確認するカウンタで使用します。

●メソッドの一覧

名前 引数 戻り値 説明
Dispose なし なし リソースの解放を行います。
※終了時に必ず呼び出します。

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

Cls_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のアドレスを設定します。
GetDivisionAddress ( String , String() , String() ) Boolean型 アドレスを表示名、アドレスのリストに変換します。
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型 送信処理後のエラーメッセージを戻します。
GetTcpResultInfo なし NSDSmtp_TcpResultInfo 送信結果を返します。
IsSendAsync なし Boolean型 非同期送信命令を実行しているかを戻します。
SendMail(False)の戻り値がFalseの場合に確認用で使用します。
IsSend なし Boolean型 非同期送信中かを返します。
SendeStop なし Boolean型 非同期送信を中止します。

●イベントの一覧

名前 引数 戻り値 説明
SmtpClient_SendCompleted ( System.ComponentModel.AsyncCompletedEventArgs ) なし 非同期送信の送信終了イベント。
TcpClient_SendCompleted ( NSDSmtp_TcpResultInfo ) なし 非同期送信の送信終了イベント。

●データ用クラスの一覧

名前:MAIL_SEND_INFO

構文:

Public Class MAIL_SEND_INFO
    Public Subject As String
    Public SubjectEncode As System.Text.Encoding
    Public SubjectBase64 As Boolean
    Public Body As String
    Public BodyEncode As System.Text.Encoding
    Public BodyTransferEncoding As CONTENT_TRANSFER_ENCODING
    Public Priority As MAIL_PRIORITY
    Public ReadingCheck As Boolean
    Public DeliveryNotification As Boolean
    Public SendStyle As MAIL_SEND_STYLE
    Public TcpDeliveryNotification_RET_Style As TCP_MAIL_OPTION_RET
    Public TcpDeliveryNotification_NOTIFY_Style As TCP_RCPT_OPTION_NOTIFY
    Public TcpDeliveryNotification_ORCPT As Boolean
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)
SendStyle MAIL_SEND_STYLE SmtpClientまたはTcpClientのどちらで送信するかの送信スタイルを指定します。
(既定値:MAIL_SEND_STYLE.SmtpClient)
TcpDeliveryNotification_RET_Style TCP_MAIL_OPTION_RET MAILコマンドのRETオプション。*1
(既定値:TCP_MAIL_OPTION_RET.NotSet)
TcpDeliveryNotification_NOTIFY_Style TCP_RCPT_OPTION_NOTIFY RCPTコマンドのNOTIFYオプション。*1
(既定値:TCP_RCPT_OPTION_NOTIFY.SUCCESS Or TCP_RCPT_OPTION_NOTIFY.FAILURE)
TcpDeliveryNotification_ORCPT Boolean RCPTコマンドのORCPTオプション設定有無。*1
(既定値:False)

 

名前:MAIL_SMTP_Server_INFO

構文:

Public Class MAIL_SMTP_Server_INFO
    Public Host As String
    Public Port As Int32
    Public TimeOut As Int32
    Public AttestationType As MAIL_ATTESTATION_TYPE
    Public DeliveryMethod As SmtpDeliveryMethod
    Public SSL As Boolean
    Public STARTTLS As Boolean
    Public ReceiveTimeout As Int32
    Public ReceiveBufferSize As Int32
    Public SendTimeout As Int32
    Public SendBufferSize As Int32
End Class

内容:サーバー情報。

名前 説明
Host String ホスト名またはIPアドレス。(既定値:Nothing)
Port Int32 SMTPポート番号。(既定値:25)
TimeOut Int32 タイムアウトする時間(ミリ秒)。(既定値:100000)
AttestationType MAIL_ATTESTATION_TYPE 認証タイプ。(既定値:MAIL_ATTESTATION_TYPE.Attestation_Account)
DeliveryMethod SmtpDeliveryMethod 送信方法。*2
(既定値:SmtpDeliveryMethod.Network)
SSL Boolean SSL(Secure Socket Layer)の使用有無。
(既定値:False)
STARTTLS Boolean STARTTLSの使用有無。*1
(既定値:False)
ReceiveTimeout Int32 受信時のタイムアウト(ミリ秒)。*1
(既定値:10000)
ReceiveBufferSize Int32 受信バッファサイズ。*1
(既定値:8192)
SendTimeout Int32 送信時のタイムアウト(ミリ秒)。*1
(既定値:10000)
SendBufferSize Int32 送信バッファサイズ。*1
(既定値:8192)

 

名前:NSDSmtp_TcpResultInfo

構文:

Public Class NSDSmtp_TcpResultInfo
    Friend Success As Boolean
    Friend LastReceiveNo As Integer
    Friend SendErr As MAIL_SEND_ERR
    Friend SendErrMsg As String
    Friend LastErrorMsg As String
    Friend LastReceiveMsg As String
End Class

内容:Tcpclientでの送信結果情報。

名前 説明
Success Boolean 成功有無。(既定値:False)
LastReceiveNo Integer 最後に受信した応答コード。(既定値:0)
SendErr MAIL_SEND_ERR 送信エラー番号。(既定値:MAIL_SEND_ERR.NoErr)
SendErrMsg String 送信エラーメッセージ。(既定値:Nothing)
LastErrorMsg String 最後のエラーメッセージ。(既定値:Nothing)
LastReceiveMsg String 最後の応答メッセージ。(既定値:Nothing)

 


●定数の一覧

名前:MAIL_ATTESTATION_TYPE (認証タイプ)
名前 内容
Attestation_Account アカウント認証。*2
Attestation_windwos Windows認証。*2
UnAttestation 認証なし。*2
Tcp_AUTO_CHECK TCPの場合に自動認証。*1
優先順位 NTLM認証 -> CRAM-MD5認証 -> PLAIN認証 -> LOGIN認証
Tcp_LOGIN ログイン認証。*1
Tcp_PLAIN PLAIN認証。*1
Tcp_NTLM NTLM認証。*1
Tcp_CRAMMD5 CRAM-MD5認証。*1

 

名前: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 タイムアウトしました。
NoSenderAddress Senderアドレスが設定されていない。
UnKnownErr 不明なエラー。
NotConnect サーバーに接続できません。
NotGetStream ストリームが取得できません。
SetErrTcpClient TcpClientが設定できません。
TcpErr_NoHeader ヘッダーが取得できません。
TcpErr_NotStream ストリームが取得できません。
TcpErr_NotSSLStream ストリームが取得できません(SSL用)。
TcpErr_NotSSLAttestation サーバーとの認証ができません(SSL用)。
TcpErr_EHLO EHLOコマンドエラー。
TcpErr_STARTTLS STARTTLSコマンドエラー。
TcpErr_NotSender 送信者の設定ができません。
TcpErr_NotTo 宛先(To)の設定ができません。
TcpErr_NotCc 宛先(Cc)の設定ができません。
TcpErr_NotBcc 宛先(Bcc)の設定ができません。
TcpErr_NotDATA データの送信開始エラー。
TcpErr_NotDATASender データの送信エラー。
TcpErr_QUIT QUITコマンドエラー。
TcpErr_NotSupportAttestation 対応している認証が存在しません。
TcpErr_Attestation 認証できません。
TcpErr_NotNTLM NTLMがサポートされていません。
TcpErr_NoNTLM_Type1 NTLM認証のType1が確認できません。
TcpErr_NoNTLM_Type2 NTLM認証のType2が確認できません。
TcpErr_NoNTLM_Type3 NTLM認証のType3が確認できません。
TcpErr_STOP 送信を中止しました。

 

名前:CONTENT_TRANSFER_ENCODING (本文のエンコード方式)
名前 内容
DefaultEncodeing デフォルトのEncodeing(QuotedPrintable)。
Base64 Base64。
SevenBit 7bit。*2

 

名前:MAIL_SEND_STYLE (メッセージの送信スタイル)
名前 内容
SmtpClient SmtpClientで送信。
TcpClient TcpClientで送信。

 

名前:TCP_MAIL_OPTION_RET (MAILコマンドのRETオプション設定用)
名前 内容
NotSet 設定なし。
FULL 元メール全体を返す。
HDRS 元メールのヘッダーのみを返す。

 

名前:TCP_RCPT_OPTION_NOTIFY (RCPTコマンドのNOTIFYオプション設定用)
名前 内容
NotSet 設定なし。
NEVER DSNを返さない。
SUCCESS 配信成功時にDSNを返す。
FAILURE 配信失敗時にDSNを返す。
DELAY 配信遅延時にDSNを返す。

●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.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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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

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

引数:なし。

値: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.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 VB2010 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 = ""    ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
            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()

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

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

引数:なし。

戻り値:なし。

使用例:

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.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 VB2010 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.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 VB2010 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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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

 

名前:GetDivisionAddress

構文:GetDivisionAddress( AddressName , MailAddress() , DispName() ) As Boolean

機能:アドレスを表示名、アドレスのリストに変換します。

引数:

名前 引数渡しの方法 説明
AddressName String 値渡し(ByVal) 表示付きのアドレスまたはアドレスを渡します。

※複数アドレスの場合はセミコロン(;)で区切ります。

表示名を指定する場合は、メールアドレスを<>で囲みます。

例:"TEST<test@xxxx.xx.xx>;test1@xxxx.xx.xx"

MailAddress() String 参照渡し(ByRef) メールアドレスを返します。
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.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 VB2010 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_ToAddress As String
            Str_ToAddress = "TEST<test@xxxx.xx.xx>;test1@xxxx.xx.xx"
            Dim Str_Address() AS String = Nothing
            Dim Str_DispName() AS String = Nothing

            ClsPub_Smtp.GetDivisionAddress(Str_ToAddress, Str_Address, Str_DispName)
        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.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 VB2010 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.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 VB2010 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.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 VB2010 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.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 VB2010 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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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:非同期送信。*2

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.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 VB2010 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 = ""    ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
            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

使用例B:非同期送信。*1

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.
    Public Bln_Add_TcpClient_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.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 VB2010 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 = ""    ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                .TcpDeliveryNotification_NOTIFY_Style = NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                                                        NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                .TcpDeliveryNotification_RET_Style = NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                .TcpDeliveryNotification_ORCPT = True
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)

            ' 非同期送信(イベントをセットします).
            AddHandler ClsPub_Smtp.TcpClient_SendCompleted, AddressOf TcpClient_SendCompleted
            Bln_Add_TcpClient_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_TcpClient_SendCompleted Then
                        ' イベントを解除します.
                        RemoveHandler ClsPub_Smtp.TcpClient_SendCompleted, _
                                      AddressOf TcpClient_SendCompleted
                        Bln_Add_TcpClient_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 TcpClient_SendCompleted(ByVal Val_TcpErrInfo As NSDSmtp.NSDSmtp_TcpResultInfo)
        Try
            If Bln_Add_TcpClient_SendCompleted Then
                ' イベントを解除します.
                RemoveHandler ClsPub_Smtp.TcpClient_SendCompleted, _
                              AddressOf TcpClient_SendCompleted
                Bln_Add_TcpClient_SendCompleted = False
            End If
        Catch ex As Exception
        Finally
            Dim Str_Msg As String = "送信しました。"
            If Not Val_TcpErrInfo.Success Then
                Str_Msg = "送信に失敗しました。" & ControlChars.CrLf & Val_TcpErrInfo.SendErrMsg
            End If
            MsgBox(Str_Msg)
        End Try
    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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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.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 VB2010 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
            ' 送信スタイル.
            Select Case Me.RadioButton1.Checked
                Case True
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
                Case False
                    SendInfo.SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                    SendInfo.TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                    SendInfo.TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                    SendInfo.TcpDeliveryNotification_ORCPT = False
            End Select
            ' メール送信情報用のクラスを設定します.
            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

 

名前:GetTcpResultInfo

構文:Public Function GetTcpResultInfo() As NSDSmtp_TcpResultInfo

機能:送信結果を戻します。*1

引数:なし。

戻り値:NSDSmtp_TcpResultInfo

戻り値の説明:

送信結果を戻します。

使用例:

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
            ' メーラ名をセット.
            ClsPub_Smtp.SetMailerName("NSD VB2010 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 = "" ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                .TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                .TcpDeliveryNotification_RET_Style = _
                             NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                .TcpDeliveryNotification_ORCPT = True
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)
            ' 同期送信.
            ClsPub_Smtp.SendMail(True)
            Dim ClsPrv_TcpResultInfo As NSDSmtp.NSDSmtp_TcpResultInfo = _
                                        ClsPub_Smtp.GetTcpResultInfo()
            If ClsPrv_TcpResultInfo.Success Then
                MsgBox("送信しました。")
            Else
                Dim Str_Msg As String = "送信に失敗しました。"
                Str_Msg &= ControlChars.CrLf & "「" & ClsPrv_TcpResultInfo.SendErrMsg() & "」"
                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.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 VB2010 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 = ""    ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
            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.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 VB2010 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 = ""    ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
            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.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 VB2010 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 = ""    ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
            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 )

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

引数:

名前 引数渡しの方法 説明
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.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 VB2010 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 = ""    ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.SmtpClient
            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

 

名前:TcpClient_SendCompleted

構文:Public Event TcpClient_SendCompleted( TcpResultInfo )

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

引数:

名前 引数渡しの方法 説明
TcpResultInfo NSDSmtp_TcpResultInfo 値渡し(ByVal) 結果情報用クラスを渡します。

戻り値:なし。

使用例:

Public Class Form1
    Public ClsPub_Smtp As NSDSmtp = Nothing ' NSDSmtp.
    Public Bln_Add_TcpClient_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.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 VB2010 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 = ""    ' <- 本文をセット.
                ' 送信スタイル.
                .SendStyle = NSDSmtp.MAIL_SEND_STYLE.TcpClient
                .TcpDeliveryNotification_NOTIFY_Style = _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.SUCCESS Or _
                             NSDSmtp.TCP_RCPT_OPTION_NOTIFY.FAILURE
                .TcpDeliveryNotification_RET_Style = NSDSmtp.TCP_MAIL_OPTION_RET.HDRS
                .TcpDeliveryNotification_ORCPT = True
            End With
            ' メール送信情報用のクラスを設定します.
            ClsPub_Smtp.SetSendInfo(SendInfo)

            ' 非同期送信(イベントをセットします).
            AddHandler ClsPub_Smtp.TcpClient_SendCompleted, _
                          AddressOf TcpClient_SendCompleted
            Bln_Add_TcpClient_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_TcpClient_SendCompleted Then
                        ' イベントを解除します.
                        RemoveHandler ClsPub_Smtp.TcpClient_SendCompleted, _
                                         AddressOf TcpClient_SendCompleted
                        Bln_Add_TcpClient_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 TcpClient_SendCompleted(ByVal Val_TcpErrInfo As NSDSmtp.NSDSmtp_TcpResultInfo)
           Try
                If Bln_Add_TcpClient_SendCompleted Then
                    ' イベントを解除します.
                    RemoveHandler ClsPub_Smtp.TcpClient_SendCompleted, _
                                     AddressOf TcpClient_SendCompleted
                    Bln_Add_TcpClient_SendCompleted = False
                End If
           Catch ex As Exception
           Finally
                Dim Str_Msg As String = "送信しました。"
                If Not Val_TcpErrInfo.Success Then
                    Str_Msg = "送信に失敗しました。" & ControlChars.CrLf & Val_TcpErrInfo.SendErrMsg
                End If
                MsgBox(Str_Msg)
           End Try
    End Sub
End Class

*1 MAIL_SEND_INFOのSendStyleがMAIL_SEND_STYLE.TcpClientの時のみ有効です。
*2 MAIL_SEND_INFOのSendStyleがMAIL_SEND_STYLE.SmtpClientの時のみ有効です。

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