メールを送信する(MailMessageクラスを使用する方法)

ページ名:12

    Function sendMail(ByVal 送信先アドレス As String, ByVal 仕入先名称 As String, ByVal 工事名称 As String, _
                      ByVal 申請者ユーザー名 As String, ByVal 申請者ユーザーアドレス As String, ByVal 承認者ユーザー名 As String, ByVal 承認者ユーザーアドレス As String, _
                      ByVal 変更日 As Integer, ByVal 注文書番号 As String, ByVal 添付ファイルパス As String, ByVal バイナリ As Byte()) As Boolean

        Dim sendflag As Boolean = True
        Dim smtp As New System.Net.Mail.SmtpClient(_Myコントロール情報.SMTPサーバー, CInt(Val(_Myコントロール情報.ポート番号)))
        Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding(_Myコントロール情報.文字コード)
        'メールを新規      
        Dim mail As New System.Net.Mail.MailMessage()
        Dim ms As New MemoryStream()
        Dim メール件名 As String = ""
        Dim メール本文 As String = ""

        Try

            ' ※※※ 注意 ※※※
            ' MailMessageクラスのBodyEncodingプロパティ指定によるエンコーディングでは、メーラーによって文字化けする可能性あり
            ' そのため、myEncodeを通して(プログラム上で)エンコードすること

            '送信元アドレス   
            mail.From = New System.Net.Mail.MailAddress(_Myコントロール情報.送信元アドレス.TrimEnd, "", enc)
            '送信先アドレス
            mail.To.Add(New System.Net.Mail.MailAddress(送信先アドレス.TrimEnd, myEncode(仕入先名称.TrimEnd, enc)))
            '複写先アドレス
            If 申請者ユーザーアドレス.TrimEnd <> "" Then mail.CC.Add(New System.Net.Mail.MailAddress(申請者ユーザーアドレス.TrimEnd, myEncode(申請者ユーザー名.TrimEnd, enc)))
            If 承認者ユーザーアドレス.TrimEnd <> "" Then mail.CC.Add(New System.Net.Mail.MailAddress(承認者ユーザーアドレス.TrimEnd, myEncode(承認者ユーザー名.TrimEnd, enc)))

            'EXCELのタイトル
            Dim 新規変更文言 As String = ""
            If 変更日 = 0 Then
                新規変更文言 = "新規"
            Else
                新規変更文言 = "変更"
            End If
            メール件名 = "注文書送付(" & 新規変更文言 & ")_注文書番号【" & 注文書番号.TrimEnd & "】"
            mail.Subject = myEncode(メール件名, enc)

            'メールの内容        
            メール本文 = _Myコントロール情報.メール本文1 & vbCrLf & _Myコントロール情報.メール本文2 & vbCrLf & _
                        _Myコントロール情報.メール本文3 & vbCrLf & _Myコントロール情報.メール本文4 & vbCrLf & _
                        _Myコントロール情報.メール本文5 & vbCrLf & _Myコントロール情報.メール本文6 & vbCrLf & _
                        _Myコントロール情報.メール本文7 & vbCrLf & _Myコントロール情報.メール本文8 & vbCrLf & _
                        _Myコントロール情報.メール本文9 & vbCrLf & _Myコントロール情報.メール本文10 & vbCrLf & _
                        _Myコントロール情報.メール本文11 & vbCrLf & _Myコントロール情報.メール本文12 & vbCrLf & _
                        _Myコントロール情報.メール本文13
            メール本文 = メール本文.Replace("@注文書名", メール件名).Replace("@客先", 仕入先名称).Replace("@件名", 工事名称).Replace("@発行元", _Myコントロール情報.発注帳票.自社情報1 & _Myコントロール情報.発注帳票.自社情報3).Replace("@担当者", 申請者ユーザー名 & "<" & 申請者ユーザーアドレス & ">")
            Dim altView As Net.Mail.AlternateView = Net.Mail.AlternateView.CreateAlternateViewFromString(メール本文, enc, System.Net.Mime.MediaTypeNames.Text.Plain)
            altView.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit
            mail.AlternateViews.Add(altView)

            If _Myコントロール情報.SMTP認証区分 <> 0 Then
                'SMTP認証情報を付加する
                'ユーザー名とパスワードを設定する
                Dim account As String = _Myコントロール情報.アカウント名
                Dim passWord As String = _Myコントロール情報.パスワード
                smtp.Credentials = New System.Net.NetworkCredential(account, passWord)
            End If

            'EXCELを添付
            Dim basePath As String = _Myコントロール情報.注文書PDF保存フォルダ
            '添付ファイル候補1(フルパスを生成し、ファイルが存在すれば添付)
            Dim file1 As String = "注文書 " & 注文書番号.TrimEnd & "_" & CStr(_sysDate) & ".pdf"
            Dim absolutePath1 As String = System.IO.Path.Combine(basePath, file1)
            If System.IO.File.Exists(absolutePath1) Then
                Dim attach1 As New System.Net.Mail.Attachment(absolutePath1)
                mail.Attachments.Add(attach1)
            End If
            '添付ファイル候補2(フルパスを生成し、ファイルが存在すれば添付)
            Dim file2 As String = "注文請書 " & 注文書番号.TrimEnd & "_" & CStr(_sysDate) & ".pdf"
            Dim absolutePath2 As String = System.IO.Path.Combine(basePath, file2)           '添付ファイル候補2 フルパス
            If System.IO.File.Exists(absolutePath2) Then
                Dim attach2 As New System.Net.Mail.Attachment(absolutePath2)
                mail.Attachments.Add(attach2)
            End If
            '添付ファイル候補3(フルパスを生成し、ファイルが存在すれば添付)
            Dim file3 As String = "完了報告書等 " & 注文書番号.TrimEnd & "_" & CStr(_sysDate) & ".pdf"
            Dim absolutePath3 As String = System.IO.Path.Combine(basePath, file3)           '添付ファイル候補3 フルパス
            If System.IO.File.Exists(absolutePath3) Then
                Dim attach3 As New System.Net.Mail.Attachment(absolutePath3)
                mail.Attachments.Add(attach3)
            End If
            '添付ファイル候補4(バイナリが空でなく かつ 添付ファイルパスが設定済であれば添付)
            If バイナリ IsNot Nothing AndAlso 添付ファイルパス.TrimEnd <> "" Then
                ms = New MemoryStream(バイナリ)
                Dim stFileName As String = System.IO.Path.GetFileName(添付ファイルパス)
                Dim attach4 As New System.Net.Mail.Attachment(ms, stFileName)
                mail.Attachments.Add(attach4)
            End If

            smtp.EnableSsl = False
            smtp.ServicePoint.MaxIdleTime = 1

            'SMTPサーバーを指定する
            smtp.Host = _Myコントロール情報.SMTPサーバー
            'ポート番号を指定する(既定値は25)
            smtp.Port = CInt(_Myコントロール情報.ポート番号)

            smtp.Send(mail)

        Catch ex As Exception
            If Me.システム環境情報.プログラム情報.枝番 = 起動モード型.手動実行 Then
                If 送信先アドレス = "" Then
                    MessageBox.Show("送信先アドレス未指定のため、メール送信できない仕入先がありました。", Me.システム環境情報.プログラム情報.名称, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                Else
                    MessageBox.Show("メール送信中にエラーが発生しました。", Me.システム環境情報.プログラム情報.名称, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                End If
            End If
            sendflag = False
        Finally
            mail.Dispose()
            ms.Dispose()
        End Try
        Return sendflag
    End Function

    Private Function myEncode(ByVal str As String, ByVal enc As System.Text.Encoding) As String
        Dim base64str As String = Convert.ToBase64String(enc.GetBytes(str))
        Return String.Format("=?{0}?B?{1}?=", enc.BodyName, base64str)
    End Function

シェアボタン: このページをSNSに投稿するのに便利です。

コメント

返信元返信をやめる

※ 悪質なユーザーの書き込みは制限します。

最新を表示する
Shermanamase

Sell Nick Twitter cổ 2009>2015 - Nick Gmail Mới Chất lượng tốt : https://CloneVia.com

Click

https://CloneVia.com

Appreciate it

Tags:
mua nick twitter cổ
mua bán email twitter
bán email twitter
đăng ký email twitter

返信
2021-10-19 21:36:36

NG表示方式

NGID一覧