首页 > 解决方案 > 如何搜索文件并将其附加到电子邮件

问题描述

我有一个 CheckedListbox(从 mysql 数据库导入),其中列出了保存文件的所有文件夹。我需要做的是为 CheckListbox 中的每个选中项目搜索文件夹,然后将该文件夹中的文件附加到邮件中。

我所做的是创建一封电子邮件并仅使用一个附件发送。只需:“电子邮件。附件。添加”。将生成邮件并将找到的文件附加并发送。

但是当我在 FOR EACH LOOP 中这样做时,将不会选择任何文件并将其添加到我的邮件中。邮件将生成并发送,没有任何错误,但没有附件。

 Private Sub SendMail()
    Dim Smtp_Server As New SmtpClient
    Dim e_mail As New MailMessage()
    Smtp_Server.UseDefaultCredentials = False
    Smtp_Server.Credentials = New Net.NetworkCredential("MAIL", "PASS")
    Smtp_Server.Port = 587
    Smtp_Server.EnableSsl = True
    Smtp_Server.DeliveryMethod = SmtpDeliveryMethod.Network
    Smtp_Server.Host = "HOST"
    If MonthTextBox.Text = "" Or MonthTextBox.ForeColor = Color.Silver Then
        MsgBox("Input month please", Title:="MO Text Box")
    Else
        Dim MOTextValue As String = MonthTextBox.Text
        Dim nowYear As Integer = Date.Now.Year

        For Each itemchecked As DataRowView In CheckedListBoxWO.CheckedItems
            Dim File_path As String = "C:\Test\" & itemchecked.Item(1) & "\" & nowYear & "\" & MOTextValue & "\"
            Dim File_Name As String = Dir("C:\Test\" & itemchecked.Item(1) & "\" & nowYear & "\" & MOTextValue & "\File " & MOTextValue & "*.xlsx")
            Dim attachmentFile As Net.Mail.Attachment = New Net.Mail.Attachment(File_path & File_Name)
            e_mail.Attachments.Add(attachmentFile)
        Next

        Dim sb As New System.Text.StringBuilder
        sb.AppendLine("Hello,<br />")
        sb.AppendLine("<br />")            
        sb.AppendLine("Test Attachment,<br />")           
        sb.AppendLine("<br />")
        sb.AppendLine("------------------------------------------<br />")            
        e_mail.From = New MailAddress("MY MAIL")
        e_mail.To.Add("EMAIL")
        e_mail.Subject = ("TESTFILE - " & MOTextValue & "")
        e_mail.SubjectEncoding = System.Text.Encoding.UTF8
        e_mail.IsBodyHtml = True
        e_mail.Priority = MailPriority.Normal
        e_mail.Body = sb.ToString()
        e_mail.BodyEncoding = System.Text.Encoding.UTF8
        Smtp_Server.Send(e_mail)
    End If
    MsgBox("Mails was sent", Title:="Mail")
End Sub

就像我用这段代码所说的那样,将创建并发送邮件,但其中没有附件文件。如果我在没有“FOR EACH”...循环的情况下执行此操作,那么将毫无问题地添加一个文件。但是我需要添加更多文件,实际上对于 CheckedListBox 中的每个选中项目,我的程序都应该搜索该文件夹,如果有文件而不是将其附加到邮件中,然后查看另一个文件夹等等......

标签: vb.netemail

解决方案


代码实际上是有效的,我的问题是对这个 CheckListBox 的引用不正确,我有多个 CheckListBox,并且代码中的一个不是我实际使用的那个......但是从好的一面看,代码正在工作中 :)


推荐阅读