如何使用带有posix和openssl作为API的c语言与pop.gmail.com建立成功的pop3连接

时间:2014-06-01 04:12:12

标签: c openssl gmail posix pop3

基本上我必须在C中创建一个客户端应用程序,以便它可以与某个电子邮件服务器(某种非常基本的outlook版本)建立POP3连接,这可以通过Unix终端执行和管理。关于电子邮件服务器,我选择了gmail,因为它提供了用于连接到电子邮件客户端应用程序的POP3和IMAP协议(正如您可能已经猜到的那样,我还必须对IMAP协议做同样的事情,考虑以后再向IMAP提出同样的问题)。我正在处理存储在此链接中的以下代码:

http://savetheions.com/2010/01/16/quickly-using-openssl-in-c/

点击链接查看代码。

我对代码所做的唯一更改是:

#define SERVER  "pop.gmail.com"
#define PORT 995

sslWrite (c, "GET /\r\n\r\n");
response = sslRead (c);
printf ("%s\n", response);

sslWrite (c, "USER myemail@mydomain.com");
response = sslRead (c);
printf ("%s\n", response);

(我用一封假电子邮件替换了我的真实电子邮件,以便提出这个问题。) 所以在这个起点我已经遇到了麻烦。第一个ssWrite运行正常,因为我收到来自pop.gmail.com的问候响应(+ Ok plus stuff),但是下一个sslWrite没有工作,因为pop.gmail.com回答抱怨-ERR错误命令。 / p>

所以我想收到一些关于如何使登录工作的建议,以及如何进一步完成其他任务,如检索电子邮件,查看电子邮件,删除电子邮件。

如果您能够提供有关如何使用IMAP协议执行相同操作的额外帮助,我将不胜感激。约束是相同的:C语言,只允许openssl和posix API。

PS:它不是必须与gmail建立联系,我只是选择它因为我认为这是一个好主意,但随意建议任何电子邮件服务器可能是很好的选择来实现这些如果您愿意,可以执行任务。

1 个答案:

答案 0 :(得分:2)

我永远不会理解人们在没有真正阅读specification(s)的情况下如何实施互联网协议。

POP3协议规范中的哪个部分描述了“GET /”命令?

当你弄明白时,你会发现问题所在。