【问题标题】:MailKit receive emails doesn't show emails received (Xamarin C#)MailKit 接收电子邮件不显示收到的电子邮件(Xamarin C#)
【发布时间】:2020-11-04 03:09:09
【问题描述】:

我正在使用 Xamarin android (C#),并且有以下代码用于接收电子邮件:

                using (var client = new Pop3Client())
                {
                    gstrEmailMessages = DateTime.Now.ToString("HH:mm:ss");

                    client.ServerCertificateValidationCallback = (s, c, h, e) => true;
                    client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
                    client.Connect("pop.gmail.com", 995, true);
                    client.AuthenticationMechanisms.Remove("XOAUTH2");
                    client.Authenticate("xxx@gmail.com", "yyyy");  //actual values not shown here

                    //Fetch emails:
                    for (int i = 0; i < client.Count; i++)
                    {
                        var message = client.GetMessage(i);
                        gstrEmailMessages = gstrEmailMessages + "Subject: {0} " + message.Subject + "\n";
                    }

                    //Disconnect connection:
                    client.Disconnect(true);

                    KMsScannedTextView = FindViewById<TextView>(Resource.Id.KMsScannedTextView_id);
                    KMsScannedTextView.Text = gstrEmailMessages;
                }

我已设置我的 gmail 帐户以显示 状态:已为所有邮件启用 POP 和 状态:IMAP 已禁用 有 4 封电子邮件等待查看。 (当有 29 封电子邮件等待时,它会导致错误。) 该应用程序编译并运行得很好,上面的代码位于一个按钮下(目前),当我点击该按钮时,应用程序成功运行代码而没有错误 - 但没有显示任何电子邮件 - 而是显示正确的时间(参见上面的 gstrEmailMessages ) 在文本视图 KMsScannedTextView 中。 文本视图当然应该显示 'Subject: {0} " + message.Subject + "\n"' 四次的结果。 还有一个按钮只是在 textview KMsScannedTextView 中重新显示 gstrEmailMessages,所以我知道没有延迟。 我还应该寻找什么来找出为什么没有显示电子邮件? For 循环在某些方面是错误的吗?

当然,当一切正常时,我会按意图进行设置,但上面的代码只是暂时的。

提前致谢。

【问题讨论】:

  • 从以下开始并阅读页面上的链接:developers.google.com/gmail/api/quickstart/dotnet
  • 你真的调试过代码吗? client.Count 是正确的 (4) 值吗? GetMessage() 是否返回值?你不应该在调用 connect 之前设置你的 auth 值吗?

标签: c# android xamarin mailkit


【解决方案1】:

您需要进入您的 GMail 设置,进入 转发和 IMAP/POP 标签,然后将您的 POP 设置更改为

  1. 为所有邮件启用 POP(甚至是已经下载的邮件)
  2. 当使用 POP 访问邮件时,将 Gmail 的副本保留在收件箱中

这些很可能不是您当前的设置,因此即使 看起来当您在 Web 客户端中查看时,您的收件箱中有 4 条消息,MailKit 的 Pop3Client 会看到 0 条消息。 p>

【讨论】:

  • 谢谢。它现在可以工作了,除了以下几点:它只计算一条消息。之后,它看不到收件箱中剩余的任何消息。这些电子邮件也发送到我的桌面电子邮件程序 (Thunderbird) 是否重要?我的 gmail 帐户设置为对所有邮件(甚至已下载的邮件)启用 POP,并且当使用 POP 访问邮件时,将 Gmail 的副本保留在收件箱中。仍然只计算一次消息。
  • 确保 Thunderbird 未配置为通过 POP 下载后删除邮件(这是默认设置)。
  • 再次感谢 jstedfast。
  • @JonathanT 如果你通过这个回答解决了这个问题,请采纳(点击这个回答左上角的“✔”),它将帮助其他有类似问题的人。
猜你喜欢
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2018-11-27
  • 1970-01-01
  • 2015-01-16
相关资源
最近更新 更多