【问题标题】:.Net - Error when get unread mail from Gmail by IMAP protocol.Net - 通过 IMAP 协议从 Gmail 获取未读邮件时出错
【发布时间】:2015-08-20 16:39:36
【问题描述】:

我正在尝试通过 IMAP 协议从 Gmail 中获取未读邮件。我遵循了这个教程:https://briancaos.wordpress.com/2012/04/24/reading-mails-using-imap-and-mailsystem-net/#comment-4999,它收到了很多优秀的 cmets。 但是当我打电话时

MessageCollection 消息 = mails.SearchParse("UNSEEN");

我收到错误消息“索引和长度必须引用字符串中的位置”。 我只是调用了一个简单的函数,所以我不知道出了什么问题。有关更多详细信息,这是我的代码 sn-p:

public class MailRepository
{

    private Imap4Client _client = null;

    public MailRepository(string mailServer, int port, bool ssl, string login, string password)
    {
        if (ssl)
            Client.ConnectSsl(mailServer, port);
        else
            Client.Connect(mailServer, port);
        Client.Login(login, password);
    }

    public IEnumerable<Message> GetAllMails(string mailBox)
    {
        return GetMails(mailBox, "ALL").Cast<Message>();
    }

    public IEnumerable<Message> GetUnreadMails(string mailBox)
    {
        return GetMails(mailBox, "UNSEEN").Cast<Message>();
    }

    protected Imap4Client Client
    {
        get
        {
            if (_client == null)
                _client = new Imap4Client();
            return _client;
        }
    }

    private MessageCollection GetMails(string mailBox, string searchPhrase)
    {
        Mailbox mails = Client.SelectMailbox(mailBox);
        MessageCollection messages = mails.SearchParse(searchPhrase);
        return messages;
    }
}

【问题讨论】:

    标签: c# asp.net imap gmail-imap


    【解决方案1】:

    当您的邮件包含非 ASCII 字符时,可能会发生此错误。由于我在这里没有看到简单的修复方法并且不再支持 MailSystem.NET,因此我建议使用替代库。

    Mailkit 似乎是一个不错的选择。另请参阅此处以获取更多参考:https://stackoverflow.com/a/23375968

    【讨论】:

    • 好主意!我已经尝试过其他图书馆。我发现 IMAPX 是一个不错的选择。不过,谢谢您的回复
    猜你喜欢
    • 2014-03-13
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2015-04-02
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多