-2

我想从文件夹中获取 .dat 和 .ctl 文件扩展名并将其放入二维数组或其他东西中。然后在电子邮件正文的两个不同列下显示两个不同的文件扩展名。怎么做。

Thanx SysDragon,但我如何动态获取表行中的文件名。我必须在邮件正文中显示表格格式,其中一列包含 datfiles 和其他 ctl 文件。我如何填充行。到目前为止,我的代码是:

Dim str As New StringBuilder
            str.Append("<html><head></head><title></title>")
            str.Append("<body style='font-size:12px;font-family:Trebuchet MS;'>")
            str.Append("<table width='600px' align='center' border='0' cellpadding='0' cellspacing='0' style='border-top:5px solid white;'")
            str.Append("<tr><td>DATFiles</td><td>CTLFiles</td></tr><tr><td>  datfiles  </td><td> ctlfiles </td> </tr></tr></table>")

datfiles 和 ctlfiles 应该是特定文件夹中存在的文件的名称。

4

2 回答 2

1

您需要在两个不同的数组中获取文件列表,然后遍历数组以生成 html。

Dim datFiles As String() = Directory.GetFiles("Y:\~", ".dat")
Dim ctlFiles As String() = Directory.GetFiles("Y:\~", ".ctl")

Dim index As Integer = 0

While index < datFiles.Count Or index < ctlFiles.Count
    str.Append("<tr>")
    str.Append("<td>" & datFiles.ElementAtOrDefault(index) & "</td>")
    str.Append("<td>" & ctlFiles.ElementAtOrDefault(index) & "</td>")
    str.Append("</tr>")

    index += 1
End While
于 2013-04-30T13:43:55.680 回答
0

您可以使用以下目录从目录中获取所需的文件(例如,指定扩展名):

查看给出的链接中的 MSDN 文档。他们也有例子。


一旦有了包含文件的数组,您就希望将数据放在电子邮件内的列上。您可以在正文电子邮件中使用 HTML(例如,使用表格)或使用制表符使用纯文本来执行此操作。

要使您的正文电子邮件使用 HTML 代码,请使用:

Dim mail As New Net.Mail.MailMessage()
mail.IsBodyHTML = True

然后使用你想要的标签:

<table>
    <tr>
        <td>File DAT 1</td>
        <td>File CTL 1</td>
    </tr>
    <tr>
        <td>File DAT 2</td>
        <td>File CTL 2</td>
    </tr>
</table>

您必须使用文件数组的循环将其作为文本添加到 HTML 正文中。


用循环填充表格数据,一个简单的例子:

Dim sBodyTable As String = "<table>"
Dim iMaxIndex As Integer = IIf(datFiles.Length > ctlFiles.Length, datFiles.Length, ctlFiles.Length)

For i As Integer = 0 To iMaxIndex - 1
    sBodyTable &= "<tr><td>"
    sBodyTable &= IIf(i < datFiles.Length, datFiles(i), "")
    sBodyTable &= "</td><td>"
    sBodyTable &= IIf(i < ctlFiles.Length, ctlFiles(i), "")
    sBodyTable &= "</td></tr>"
Next

sBodyTable &= "</table>"
于 2013-04-30T11:38:56.993 回答