【问题标题】:QT email client using IMAP4使用 IMAP4 的 QT 电子邮件客户端
【发布时间】:2014-07-14 18:48:48
【问题描述】:

我正在开发一个 QT 程序,它将检查来自 gmail 的新邮件并使用 IMAP4 协议下载它们。我无法编写命令来显示收件箱中的消息。请帮我。这是我的代码示例。

    socket->connectToHostEncrypted("imap.gmail.com", 993);

    if(!socket->waitForConnected(50000)){
        qDebug()<<"Error:"<<socket->errorString();
    }
}

void MySocket::connected(){
    qDebug()<<"**********\nconnected....\n*********";

    QByteArray byteArray("a001 LOGIN username password");
    socket->write(byteArray);
    socket->write("\r\n");

    socket->waitForReadyRead();

    byteArray.clear();
    byteArray.append("A002 LIST inbox");
    socket->write(byteArray);
    socket->write("\r\n");

}

【问题讨论】:

  • LIST 命令列出邮箱。它不列出特定邮箱的内容。我建议您首先使用诸如“openssl s_client -connect imap.gmail.com:993 -crlf”之类的命令以交互方式使用 IMAP,当您知道如何阅读邮件时,您可以编写一个程序来执行此操作。您可能会发现 RFC3501 或 kmail 源代码很有帮助。
  • 除了它太宽泛之外,我想知道您的图标是否侵犯了 Qt 项目的版权。你有没有用Digia等仔细检查过?当时我们在稍微修改它时遇到了一些麻烦,而且您似乎也没有使用“香草”标志。哦,根据您的徽标,该项目称为Qt(Q 工具包)而不是QT(快速时间)。

标签: qt imap


【解决方案1】:

您显然不熟悉 IMAP 协议,因此如果您希望能够有效地使用该协议,则需要阅读 RFC3501。

我还建议您查看我的博客文章 IMAP: Downloading emails 以快速启动和运行。

LIST 命令将列出您帐户中的文件夹。您需要在文件夹中下载电子邮件或查看其元数据是FETCH Command。同样,阅读 RFC 以了解它提供的内容。在 Stack Overflow 上提问之前,通常希望您已经完成了研究。

【讨论】:

  • 并不是说我不同意,但感觉就像评论材料而不是回答。这个问题可能很快就会被关闭(并删除?),我有印象。
  • 你说得对——这只是为了给作者指明正确的方向。
【解决方案2】:

编写 IMAP 客户端绝非易事。您是否考虑过使用一些现有的用 Qt 编写的 IMAP 库?我当然可以推荐Trojitá的代码,或者KDE的IMAP代码。

【讨论】:

  • 并不是说我不同意,但感觉就像评论材料而不是回答。这个问题可能很快就会被关闭(并删除?),我有印象。
猜你喜欢
  • 2019-01-22
  • 2013-03-03
  • 1970-01-01
  • 2010-11-09
  • 2016-08-18
  • 2022-01-13
  • 2020-12-22
  • 1970-01-01
  • 2010-10-23
相关资源
最近更新 更多