Получение последнего непрочитанного сообщения из Gmail - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь проанализировать последнее непрочитанное сообщение из gmail, но по какой-то причине мой код дает сбой, хотя форматирование сообщения немного отличается.

Когда я вручную отправляю сообщение на электронную почту,этот код работает. В этом случае почта выглядит так: Изображение

Сам код выглядит так:

        public static int GetMail()
    {

        //OTP READ FROM GMAIL
        var client = new Pop3Client();
        client.Connect("pop.gmail.com", 995, true);
        client.Authenticate("MAIL@gmail.com", "PASSWORD");
        var count = client.GetMessageCount();
        Message messages = client.GetMessage(count);
        MessagePart plainTextPart = messages.FindFirstPlainTextVersion();
        string message = plainTextPart.GetBodyAsText();
        string resultString = Regex.Match(message, @"\d+").Value;
        int Mail = Int32.Parse(resultString);
        client.DeleteAllMessages();
        client.Disconnect(); 

        return Mail;

    }

Но когда я устанавливаю приложение на свой мобильный телефон (которыйавтоматически пересылает новые сообщения на вашу электронную почту), приложение изменяет формат сообщения, и сообщение электронной почты выглядит так: Изображение 2

Как кажется, когда форматирование сообщения электронной почты изменяется, оно не 'больше не работаетНе могли бы вы, ребята, подсказать, как изменить код, чтобы он работал с форматированием, приведенным в Изображение 2 .

1 Ответ

0 голосов
/ 04 октября 2019

Проблема с вашим регулярным выражением. Эта строка:

string resultString = Regex.Match(message, @"\d+").Value;

"\ d +" соответствует одной или нескольким цифрам. На рисунке 2 есть несколько результатов для этого регулярного выражения: 6 цифр, которые вы хотите сопоставить, и части даты.

Попробуйте изменить регулярное выражение на "\ d {6}":

string resultString = Regex.Match(message, @"\d{6}").Value;

Это предполагает, что вы хотите, чтобы совпадение всегда состояло из 6 цифр.

Вы можете прочитать о регулярном выражении C # здесь: https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference И проверить свое регулярное выражение здесь: https://regex101.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...