Member 12140172 Ответов: 1

Как сохранить тело письма в текстовый файл C#


Я пытаюсь скопировать свой почтовый ящик в текстовый файл, а затем найти слово в этом текстовом файле. если это слово существует, я буду использовать это слово для запроса email-id из БД, наконец, переслать это письмо на этот email-id. моя проблема в том, что я не могу скопировать электронную почту в текстовый файл .

переменная MSG всегда пуста.

Что я уже пробовал:

<pre>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();
        }
    }
}

Vinod Jangle

Итак, с какой проблемой/ошибкой вы столкнулись в этом вопросе?

Member 12140172

моя проблема в том что текстовый файл всегда пуст нет данных в переменной msg

Vinod Jangle

Di вы проверили во время отладки, есть ли у вашего объекта "msg" входящие значения...

CHill60

Когда вы отлаживаете свой код есть ли что-нибудь внутри msg для какой-нибудь из итераций i ? (Кстати, msg уже является строкой, так что вам не нужно использовать msg.Метод toString()). Почему вы начинаете с последнего сообщения?
Зачем утруждать себя чтением файла еще раз? Просто использовать

if(msg.Contains("customer ID: X"))
... и проверьте орфографию вашего клиента

1 Ответов

Рейтинг:
11

OriginalGriff

Первое, что нужно отметить, это то, что вы звоните File.WriteAllText внутри цикла-и этот метод всегда будет перезаписывать любое существующее содержимое файла - поэтому после цикла вы всегда будете получать только окончательное сообщение, которое вы обрабатываете.
Во-вторых, чтобы увидеть, что вы вызываете Tostring на строке-которая ничего не делает.
Наконец, вам нужно использовать отладчик, чтобы узнать, что здесь происходит: мы не можем сделать это за вас! Начните с установки точки останова на линии:

int messageCount = client.GetMessageCount();
И запустите свой код. когда он остановится, сделайте один шаг по линии и посмотрите на счетчик-он равен нулю? Если это так, то причина именно в этом. Если нет, продолжайте один шаг и посмотрите, что именно возвращается на каждом этапе. Это должно быть довольно очевидно, где проблема, если вы сделаете это, и это должно сказать вам, где начать искать, чтобы исправить это.