如何在c#中将电子邮件正文保存到文本文件中

时间:2017-05-01 12:10:57

标签: c# asp.net .net asp.net-mvc-4

我尝试将收件箱电子邮件复制到文本文件,然后在此文本文件中搜索 word 。如果这个单词存在,我将使用这个词从db查询 email-id ,最后将此邮件转发到此email-id。 我的问题是我无法将电子邮件复制到文本文件中。 msg变量总是为空 这是我的代码:

using (Pop3Client client = new Pop3Client())
{
    client.Connect("pop.gmail.com", 995, true);
    client.Authenticate("mymail@gmail.com", "pasword", AuthenticationMethod.UsernameAndPassword);

    // Get the number of messages in the inbox
    int messageCount = client.GetMessageCount();

    for (int i = messageCount; i > 0; i--)
    {
        string msg = client.GetMessage(i).MessagePart.GetBodyAsText().ToString();

        System.IO.File.WriteAllText(@"d:\\My File2.log", msg.ToString());
        var body = System.IO.File.ReadLines(@"d:\\My File2.log");
        if (body.Contains("cusotmer ID: X"))
        {
            getemailadress();
            sendemail();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你能使用这段代码: var mailbody = ASCIIEncoding.ASCII.GetString(message.RawMessage); 像这样:

using (Pop3Client client = new Pop3Client())
{
    client.Connect("pop.gmail.com", 995, true);
    client.Authenticate("mymail@gmail.com", "pasword", AuthenticationMethod.UsernameAndPassword);

    // Get the number of messages in the inbox
    int messageCount = client.GetMessageCount();

    for (int i = messageCount; i > 0; i--)
    {

string msg = ASCIIEncoding.ASCII.GetString(client.GetMessage(i).RawMessage);


        System.IO.File.WriteAllText(@"d:\\My File2.log", msg);
        var body = System.IO.File.ReadLines(@"d:\\My File2.log");
        if (body.Contains("cusotmer ID: X"))
        {
            getemailadress();
            sendemail();
        }
    }
}

并且,建议:停止调用.ToString()已经是字符串对象。

我无法理解您为什么要将messageBody保存到TextFile。因为WriteAllText函数会在每个循环上覆盖此文件。 所以你不会发现这个方法的所有消息结束。您只能在文本文件中找到最后一个消息正文。你注意到了吗?