我一直在使用IMAP客户端从Gmail获取电子邮件。我的应用程序运行良好,直到大约一个小时前附件停止检索。
imapX正在处理连接和消息传递。
连接正常登录可以获取文件夹是可以的获取消息是可以的
此时附件。计数==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);
}
}
我已经制作了一个变通方案,允许我获取附件数据。这不是我心目中的解决方案,尽管它确实有效。
简单的文件扩展名检查,然后对消息数据进行转换。
BTW:_encoding=编码.GetEncoding(1252);
if (bodyPart.ContentFilename.EndsWith(".csv"))
{
return _encoding.GetString(Convert.FromBase64String(bodyPart.ContentStream));
}