【问题标题】:Getting last unread message from Gmail获取来自 Gmail 的最后一条未读邮件
【发布时间】:2019-10-04 16:59:47
【问题描述】:

我正在尝试解析来自 gmail 的最后一条未读邮件,但由于某种原因,我的代码失败了,而邮件的格式有点不同。

当我手动将消息发送到电子邮件时,此代码有效。在这种情况下,邮件如下所示: Picture

代码本身是这样的:

        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;

    }

但是当我在我的手机上安装一个应用程序(它会自动将新消息转发到您的电子邮件)时,应用程序会更改消息格式并且电子邮件消息看起来像这样:Picture 2

看起来,当电子邮件格式发生变化时,它就不再起作用了。你们能否给我建议如何修改代码,使其适用于Picture 2中给出的格式。

【问题讨论】:

  • 当您说“最后”时,您的意思是“最新收到的”还是“最旧的未读”?另外,您的问题与硒有什么关系?
  • @John 我的意思是最新的未读消息。该代码与 selenium 集成,我正在该库中工作。
  • 哦! Pop3Client 是 Selenium 库吗?
  • 不,我的意思是我在 Selenium 库中工作,我使用该库中的代码

标签: c# selenium gmail


【解决方案1】:

您的正则表达式有问题。这一行:

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

“\d+”匹配一个或多个数字。在 Picture2 中,此正则表达式有几个结果:您要匹配的 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/

【讨论】:

  • 我刚刚阅读了 Regex.Match。它应该匹配一个或多个数字的第一次出现。也许被删减的文本的一部分包括数字并且它是匹配的?
  • 您好,感谢您的贡献。问题出现在字符串消息行上,代码显示异常,定义为$exception {"Object reference not set to an instance of an object."} System.NullReferenceException". 代码与行:string message = plainTextPart.GetBodyAsText();
  • 哦,好吧。这可能应该是您的问题描述的一部分。这表明“plainTextPart”为空。您是否尝试过调试每种情况,也许您将能够看到问题所在。
猜你喜欢
  • 1970-01-01
  • 2016-10-27
  • 2016-07-07
  • 2014-04-19
  • 2016-11-30
  • 2018-06-22
  • 2011-10-14
  • 2017-11-13
  • 2017-11-14
相关资源
最近更新 更多