【问题标题】:How to delete email message with libcurl and POP3?如何使用 libcurl 和 POP3 删除电子邮件?
【发布时间】:2014-01-14 14:44:15
【问题描述】:

有可能吗?我知道自定义请求;所以我发送带有文本“DELE”的自定义请求,并设置我要删除的消息 ID。结果, curl_easy_perform 挂起,直到出现超时。在网络论坛上,人们写建议在“DELE”之后发送“QUIT”命令;但是如果 libcurl 挂起,如何发送“QUIT”命令?

libcurl 调试输出如下:

* Connected to pop-mail.outlook.com (157.55.1.215) port 995 (#2)
* SSL connection using DES-CBC3-SHA
* Server certificate:
*        subject: C=US; ST=Washington; L=Redmond; O=Microsoft Corporation; CN=*.
hotmail.com
*        start date: 2013-04-24 20:35:09 GMT
*        expire date: 2016-04-24 20:35:09 GMT
*        issuer: C=BE; O=GlobalSign nv-sa; CN=GlobalSign Organization Validation
 CA - G2
*        SSL certificate verify result: unable to get local issuer certificate (
20), continuing anyway.
< +OK DUB0-POP132 POP3 server ready
> CAPA
< -ERR unrecognized command
> USER ************@hotmail.com
< +OK password required
> PASS ******************
< +OK mailbox has 1 messages
> DELE 1
< +OK message deleted
* Operation too slow. Less than 1000 bytes/sec transferred the last 10 seconds
> QUIT
* Operation too slow. Less than 1000 bytes/sec transferred the last 10 seconds
* Closing connection 2

因此,消息被删除,但 libcurl 挂起,直到速度限制迫使它断开连接,这是个坏主意。删除消息后如何强制停止,不要等到超时?

【问题讨论】:

    标签: c++ c libcurl pop3


    【解决方案1】:

    如果您查看 libcurl 文档,CURLOPT_CUSTOMREQUEST 会说:

    POP3

    当您告诉 libcurl 使用自定义请求时,它的行为就像发送 LIST 或 RETR 命令一样,它希望服务器返回数据。因此,在指定 DELE 和 NOOP 等命令时,应使用 CURLOPT_NOBODY。

    这就是 libcurl 挂起的原因 - 它正在等待更多服务器未实际发送的数据。所以添加CURLOPT_NOBODY 以停止等待。

    【讨论】:

      【解决方案2】:

      最近在 libcurl 网站上添加了一个示例代码,显示了如何执行此操作:

      pop3-dele.c

      【讨论】:

      • 该示例缺少 CURLOPT_NOBODY,lubcurl 文档说 POP3 DELE 请求需要该示例。
      • 啊哈,我会告诉史蒂夫(谁写了这个例子)谢谢!
      猜你喜欢
      • 1970-01-01
      • 2023-03-17
      • 2013-11-17
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-20
      • 2017-05-20
      相关资源
      最近更新 更多