gpt4 book ai didi

c++ - 使用 SSL 连接到 imap.google

转载 作者:搜寻专家 更新时间:2023-10-31 00:46:47 27 4
gpt4 key购买 nike

我正在尝试制作一个电子邮件客户端,但它不起作用:/我正在尝试使用 SSL 连接到 google imap(没有 SSL 我可以做到)代码:

#include "StdAfx.h"
#include "openssl/ssl.h"
#include "iostream"
#include <cstdio>
#include <iostream>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <windows.h>
using namespace std;
#pragma comment(lib, "Ws2_32.lib")

#define BUFSIZE 1024
char buf[BUFSIZE];
char *msg;
WSADATA wsda;
int sock;
struct hostent *host;
struct sockaddr_in server_addr;
short int s_port = 993;
const char *s_ipaddr = "74.125.77.109";
int SSL_library_init();
SSL_METHOD *meth;
int main () {
SSL_load_error_strings();
SSL_library_init();
//RAND_seed(buf, BUFSIZE);

SSL_CTX *sslContext = SSL_CTX_new(SSLv23_client_method());
if (sslContext == NULL)
{
cout << "err\n";
}

SSL *sslConnection = SSL_new(sslContext);
if(sslConnection == NULL)
{
cout << "err\n";
}




WSAStartup(MAKEWORD(2,2), &wsda);

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);

server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(s_port);
server_addr.sin_addr.s_addr = inet_addr(s_ipaddr);

if(server_addr.sin_addr.s_addr == INADDR_NONE)
{
host = NULL;
host = gethostbyname(s_ipaddr);
if(host == NULL)
{
return false;
}
memcpy(&server_addr.sin_addr, host->h_addr_list[0], host->h_length);
}

connect(sock, (struct sockaddr *) &server_addr, sizeof(server_addr));


SSL_set_fd(sslConnection, sock);

SSL_connect(sslConnection);
cout << "Connecting:\n";

SSL_read(sslConnection, buf, sizeof(buf)-1);
cout << buf << "\n";

cout << "Logging-in:\n";
msg = "a1 login emailapp123@gmail.com PASS\n";
SSL_write(sslConnection, msg, strlen(msg));

SSL_read(sslConnection, buf, sizeof(buf)-1);
cout << buf << "\n";

cout << "INBOX\n";

msg = "a2 SELECT INBOX\n";
SSL_write(sslConnection, msg, strlen(msg));
SSL_read(sslConnection, buf, sizeof(buf)-1);
cout << buf << "\n";
system("pause");
}

这就是我收到的:

Connecting: * OK Gimap ready for requests from 195.150.156.162 y48if37710eei.45

Logging-in: * CAPABILITY IMAP4rev1 UNSELECT LITERAL+ IDLE NAMESPACE QUOTA ID XLIST CHILDREN X-GM-EXT-1 UIDPLUS COMPRESS=DEFLATE a1 OK emailapp123@gmail.com authenticated (Success)

INBOX

我应该怎么做才能正确连接?感谢您的每一个建议:-)克里斯

最佳答案

您需要使用回车符和换行符终止所有发送到 imap 服务器的命令。发送 a2 SELECT INBOX\r\n 它应该可以工作。

关于c++ - 使用 SSL 连接到 imap.google,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4726633/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com