【问题标题】:Gmail IMAP - Attachments not appearingGmail IMAP - 附件未显示
【发布时间】:2012-02-14 16:49:47
【问题描述】:

我一直在使用 IMAP 客户端来接收来自 Gmail 的电子邮件。我的应用程序运行良好,直到大约一个小时前,附件不再被检索。

imapX 正在处理连接和消息传递。

连接正常 登录没问题 获取文件夹没问题 获取消息没问题

此时附件.Count == 0。它在今天下午早些时候工作,所以我想知道我是否已经过度测试并且谷歌已将我的计算机列入黑名单一段时间?有谁知道是否是这种情况? - 可能每 5-10 分钟运行一次,有时可能更多,所以这可能是一个合理的问题。

我尝试发送一封带有全新文件的新电子邮件,但它仍然看不到附件(但它(总是)看到邮件本身)。

任何人都可以对这个问题有所了解吗?

编辑:标题包含以下标签 {[X-MS-Has-Attach, yes]}

编辑(代码):

private void PollMailFolders(object state)
    {
        try
        {

            if(_imapClient == null || !_imapClient.IsConnected)
                _imapClient = new ImapClient(_config.Server, _config.Port, true);

            if (_imapClient.Connection())
            {
                if(!_imapClient.IsLogined)
                    _imapClient.LogIn(_config.Username, _config.Password);

                string dateSearch = string.Format(
                    "SINCE {0:d-MMM-yyyy}{1}", DateTime.Today.AddDays(-_config.HistoryOnStartupDays),
                                                  _isFirstTime ? "" : " UNSEEN");

                _isFirstTime = false;

                foreach (Folder folder in _imapClient.Folders["SSForecasts"].SubFolder)
                {
                    var messages = _imapClient.Folders[folder.Name].Search(dateSearch, false);

                    foreach (Message m in messages)
                    {
                        m.Process();

                        foreach (var a in m.Attachments)
                        {
                            SendDataToParser(_encoding.GetString(a.FileData), folder.Name);
                        }
                        m.SetFlag(ImapFlags.SEEN);
                    }
                }
            }
        }
        catch(Exception e)
        {
            _diagnostics.Logger.ErrorFormat("Error in PollMailFolders: {0}", e);
        }
    }

【问题讨论】:

  • 需要代码来帮助您。
  • 好的,明天发帖——现在不在工作。由于工作代码和不工作代码之间没有区别(90% 肯定!!! - 不需要告诉我拼写错误等),我认为问题一定与 Gmail Imap 活动的限制有关。
  • 纯属推测;但它也可能是一个过分热心的防火墙。

标签: c# gmail imap attachment imapx


【解决方案1】:

我制作了一个允许我获取附件数据的解决方法。不是我想到的解决方案,虽然它确实有效。

简单的文件扩展名检查,然后转换消息数据。

顺便说一句:_encoding = Encoding.GetEncoding(1252);

            if (bodyPart.ContentFilename.EndsWith(".csv"))
            {
                return _encoding.GetString(Convert.FromBase64String(bodyPart.ContentStream));
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 2012-01-11
    • 2016-05-04
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    相关资源
    最近更新 更多