无效日期:下载电子邮件时出现无效的时区错误,lumisoft.dll

时间:2012-12-26 12:23:55

标签: c# asp.net email imap lumisoft

我正在使用lumisoft.net.dll来阅读/查看来自我邮箱的电子邮件。将它们记录在数据库中。

这是代码

private List<IMAP_Envelope> GetNewReplies()
{
    List<IMAP_Envelope> lstNewReplies = new List<IMAP_Envelope>() { };

    using (IMAP_Client client = new IMAP_Client())
    {
        client.Connect(Common.IMAPHost, Common.IMAPPort, Common.SSL);
        client.Login(Common.ReplyTo, Common.ReplyToPassword);
        client.SelectFolder("INBOX");

        IMAP_SequenceSet sequence = new IMAP_SequenceSet();
        //sequence.Parse("*:1"); // from first to last

        IMAP_Client_FetchHandler fetchHandler = new IMAP_Client_FetchHandler();
        fetchHandler.NextMessage += new EventHandler(delegate(object s, EventArgs eNexMessage) { });
        fetchHandler.Envelope += new EventHandler<EventArgs<IMAP_Envelope>>(delegate(object s, EventArgs<IMAP_Envelope> eEnvelope)
        {
            lstNewReplies.Add(eEnvelope.Value);
        });

        // the best way to find unread emails is to perform server search
        Int32[] unseen_ids = client.Search(false, null, "unseen");

        if (unseen_ids.Length > 0)
        {
            System.Text.StringBuilder sbUnseenIDs = new System.Text.StringBuilder();
            foreach (Int32 unseen_id in unseen_ids)
            {
                if (sbUnseenIDs.Length <= 0)
                {
                    sbUnseenIDs.Append(Convert.ToString(unseen_id));
                }
                else
                {
                    sbUnseenIDs.Append("," + Convert.ToString(unseen_id));
                }
            }

            // now we need to initiate our sequence of messages to be fetched                    
            sequence.Parse(sbUnseenIDs.ToString());

            // fetch messages now                    
            IMAP_Fetch_DataItem[] lstDataItem = new IMAP_Fetch_DataItem[] { new IMAP_Fetch_DataItem_Envelope() };
            client.Fetch(false, sequence, lstDataItem, fetchHandler);

            //this line marks messages as read
            client.StoreMessageFlags(false, sequence, IMAP_Flags_SetType.Add, IMAP_MessageFlags.Seen);

            //this line marks messages as deleted
            client.StoreMessageFlags(false, sequence, IMAP_Flags_SetType.Add, IMAP_MessageFlags.Deleted);
        }

        //client.CloseFolder();
        client.Expunge();
        client.Disconnect();
        client.Dispose();
    }

    return lstNewReplies;
}

这大部分工作正常,但有时会开始抛出异常

client.Fetch(false, sequence, lstDataItem, fetchHandler);

Invalid Date: Invalid time zone.

我注意到,当有人通过黑莓手机或某些鲜为人知的电子邮件客户端发送电子邮件时,就会发生这种情况。

如果我删除黑莓手机发送的有问题的电子邮件,通过进入邮箱的网络界面,它会重新开始工作。

我应该从哪里开始寻找解决方案?

0 个答案:

没有答案