通过电子邮件发送csv行

时间:2014-01-12 16:54:23

标签: c# csv filereader

我想在csv文件上找到一个日期,我希望将此行作为电子邮件发送 adam smit;1.12.2014我正在使用此代码,但身体总是空的我想知道是什么原因造成的? 谢谢你的帮助

System.IO.StreamReader file = new System.IO.StreamReader(@"c:\test.csv");    
while ((line = file.ReadLine()) != null)
{

    int i = 0;
    string[] words = line.Split(";"[0]);
    if (words[i] == DateTime.Now.ToString("dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture)) 
    {
         mail.Body = line;
    }   
    i++;
    counter++;                                      
}

3 个答案:

答案 0 :(得分:1)

你的变量i始终为0.你应该将你的行追加到mail.body而不是覆盖整个身体。

试试这个:

var file = new System.IO.StreamReader(@"c:\test.csv");
while ((line = file.ReadLine()) != null)
{
    string[] words = line.Split(';');
    DateTime dt;
    if(DateTime.TryParse(words[1], new CultureInfo("de-DE"), DateTimeStyles.None, out dt) 
        && dt.Date == DateTime.Today)
    {
        mail.Body += line + Environment.NewLine;
    }
}

答案 1 :(得分:0)

变量声明[i]应该在控制循环之前,而不是在它内部。

答案 2 :(得分:-1)

单词[i]总是给你0项,因为你没有在里面做任何循环。所以代替:

if (words[i] == DateTime.Now.ToString("dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture)) 
{

使用

if (words[1] == DateTime.Now.ToString("dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture)) 
{

你不需要i变量和i ++增量