none
リストボックスでのエラーメッセージの出し方について RRS feed

  • 質問

  • お世話になります

    Vb.Netで リストボックスにファイルを添付して、メールを送信しております
    リストボックス内で添付ファイルの有無をチェックして、無い場合はエラーを出したいと思います

    以下のコードでメール送信を行う事は出来ますが、添付ファイルがない場合でも、メール送信が出来ますので
    添付ファイルがない場合は、エラーメッセージを出したく思います

    送信
    Private Sub Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Send.Click
    If ToAddress.Text = "" Or from.Text = "" Then
    MsgBox("You must enter both To and From email addresses.")
    Exit Sub End If
    Dim mailMsg As New MailMessage(New MailAddress(from.Text.Trim, TextBox4.Text), New MailAddress(ToAddress.Text.Trim))
    With mailMsg
    If Not String.IsNullOrEmpty(CC.Text) Then
    .CC.Add(New MailAddress(CC.Text.Trim))
    End If
    If Not String.IsNullOrEmpty(BCC.Text) Then
    .Bcc.Add(New MailAddress(BCC.Text.Trim))
    End If
    .Subject = textbox2.Text .Body = textbox3.Text
    Dim body As String = textbox3.Text
    Dim subject As String = textbox2.Text
    If Not IsNothing(arlAttachments) Then
    Dim mailAttachment As Attachment
    For Each mailAttachment In arlAttachments
    .Attachments.Add(mailAttachment)
    Next End If End With
    Try
    Dim Client As New System.Net.Mail.SmtpClient()
    Client.Host = "smtpサーバ"
    Client.Port = ポート番号
    Client.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network
    Client.Credentials = New System.Net.NetworkCredential("user", "pw")
    Client.Send(mailMsg)
    Attachments.Items.Clear()
    Attachments.Items.Add("(No Attachments)")
    MessageBox.Show("Your email has been successfully sent!", _
    "Email Send Status", MessageBoxButtons.OK, _
    MessageBoxIcon.Information)
    Catch exp As Exception
    MessageBox.Show("The following problem occurred when attempting to " & _
    "send your email: " & exp.Message, _
    Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)
    End Try End Sub

    添付ファイルの選択

    Private Sub Browse_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Browse.Click
    With odlgAttachment
    .InitialDirectory = "C:\"
    .Filter = "All Files (*.*)|*.*|HTML Files (*.htm;*.html)|*.htm|Microsoft Mail Documents (*.msg)|*.msg|Word Documents (*.doc)|*.doc|Excel Files(*.xl*)|*.xl*|Excel Worksheets (*.xls)|*.xls|Excel Charts (*.xlc)|*.xlc|PowerPoint Presentations (*.ppt)|*.ppt|Text Files (*.txt)|*.txt"
    .FilterIndex = 1
    If .ShowDialog() = Windows.Forms.DialogResult.OK Then
    If IsNothing(arlAttachments) Then
    arlAttachments = New ArrayList()
    Attachments.Items.Clear()
    End If
    arlAttachments.Add(New Attachment(.FileName))
    Dim strFileName() As String = .FileName.Split(New Char() {CChar("\")})
    System.Array.Reverse(strFileName)
    Attachments.Items.Add(strFileName(0))
    End If
    End With
    End Sub

    となっております。上記の場合、添付ファイルがあってもなくてもメール送信を行う事が出来ます。
    ボタン1をクリックして、Cドライブを表示させて、ファイルを添付させます。

    添付ファイルを表示するListbox名は、attachmentsになります。
    添付ファイルがない場合は、エラーメッセージを出すためにはどうすれば良いでしょうか?

    ご教授下さい

    宜しくお願いします

    2013年9月25日 6:19

回答

  • 以下のコードで添付ファイルをmailMsgに付加しているようです。

    If Not IsNothing(arlAttachments) Then
        Dim mailAttachment As Attachment
        For Each mailAttachment In arlAttachments
        .Attachments.Add(mailAttachment)
    Next

    であれば、このIf文がfalseであった場合、添付ファイルが無いということになりませんか?

    掲載されたコードのメッセージには英語が含まれていますが、どこかに掲載されているコードを利用されているのでしょうか?
    コードは利用するだけではなく、どのように動作しているのかを理解されれば、どこを改修して良いかがわかるようになると思います。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク YTB1 2013年9月25日 6:59
    2013年9月25日 6:33
    モデレータ